精华内容
下载资源
问答
  • Java成员内部类1 什么是Java成员内部类在类内部但在方法外部创建的非静态类称为成员内部类。2 Java成员内部类的语法class Outer{//codeclass Inner{//code}}3 Java成员内部类的例子在此示例中,我们在成员内部类中...

    Java成员内部类

    1 什么是Java成员内部类

    在类内部但在方法外部创建的非静态类称为成员内部类。

    2 Java成员内部类的语法

    class Outer{

    //code

    class Inner{

    //code

    }

    }

    3 Java成员内部类的例子

    在此示例中,我们在成员内部类中创建msg() 方法,该方法正在访问外部类的私有数据成员。

    package com.yiidian;

    /**

    * 一点教程网: http://www.yiidian.com

    */

    /**

    * Java成员内部类的例子

    */

    class Demo{

    private int data=30;

    class Inner{

    void msg(){

    System.out.println("data变量值为:"+data);

    }

    }

    public static void main(String args[]){

    Demo obj=new Demo();

    Demo.Inner in=obj.new Inner();

    in.msg();

    }

    }

    输出结果为:

    data变量值为:30

    4 Java成员内部类的工作原理

    如果是内部类,则Java编译器会创建两个类文件。内部类的类文件名是“Outer$Inner”。如果要实例化内部类,则必须创建外部类的实例。在这种情况下,将在外部类的实例内部创建内部类的实例。

    Java编译器会创建一个名为Outer$Inner的类文件。成员内部类具有外部类的引用,这就是为什么它可以访问外部类的所有数据成员(包括私有数据)的原因。下面是成员内部类反编译后的源码:

    import com.yiidian;

    class Outer$Inner

    {

    final Outer this$0;

    Outer$Inner()

    { super();

    this$0 = Outer.this;

    }

    void msg()

    {

    System.out.println((new StringBuilder()).append("data is ")

    .append(Outer.access$000(Outer.this)).toString());

    }

    }

    展开全文
  • JAVA成员内部类

    2020-01-15 19:55:35
    成员内部类可以看作是外部类的非静态成员的内部类。内部类和外部类的其他成员是同一级别的,也是外部类的一个成员。 package JAVA_Project_01_05; //成员内部类可以看作是外部类的非静态成员的内部类。内部类和...

    成员内部类可以看作是外部类的非静态成员的内部类。内部类和外部类的其他成员是同一级别的,也是外部类的一个成员。

     package JAVA_Project_01_05;
    
    //成员内部类可以看作是外部类的非静态成员的内部类。内部类和外部类的其他成员是同一级别的,也是外部类的一个成员。
    
    //使用成员内部类的技术要点如下:
    //
    //· 成员内部类的语法格式:class外部类名{(public/private/protected)class内部类名{}...}。在成员内部类中,可以拥有自己的成员变量和方法,是一个独立的类,内部类和外部类的实例变量是可以共存的。
    //
    //· 成员内部类可以访问外部类的私有成员或属性。即使将外部类声明为private,成员内部类依然是可见的。
    //
    //· 内部类和外部类在编译时是两个不同的类,内部类对外部类没有任何依赖。成员内部类一旦编译成功,就会成为与外部类完全不同的类。
    
    class OuterClass {
    
        String outer = "outer class";
    
        private int number = 1;
    
        private static int count = 10;
    
        public OuterClass() {
        }//默认构造方法
    
        public OuterClass(int number, int count) {//带参数的构造方法
    
            this.number = number;
    
            this.count = count;
    
            System.out.println("传入的数分别为:" + this.number + "与" + this.count);
    
        }
    
        private void outer_1() {//外部类非静态方法
    
            System.out.println("调用外部类的非静态方法");
    
            InnerClass inner = this.new InnerClass();
    
        }
    
        private static void outer_2() {//外部类的静态方法
    
            System.out.println("调用外部类的静态方法");
    
            //InnerClass inner=this.new InnerClass();
    
        }
    
        class InnerClass {//定义成员内部类
    
            String outer = "innerclass";
    
            public InnerClass() {//默认构造方法
    
                System.out.println("成员内部类的构造方法");
    
            }
    
            protected void communicate() {//交流的方法
    
                System.out.println("外部类的字符串:" + OuterClass.this.outer);
    
                System.out.println("内部类的字符串:" + this.outer);
    
            }
    
            protected void inner_1() {//成员内部类的非静态方法
    
                System.out.println("调用外部类的私有方法");
    
                outer_1();
    
                outer_2();
    
            }
    
        }
    
    }
    
    public class TextMemberInnerClass {//操作成员内部类的类
    
        public static void main(String[] args) {//Java程序主入口处
    
            OuterClass outer = new OuterClass(10,20);//实例化对象
    
            OuterClass.InnerClass inner = outer.new InnerClass();//实例化成员内部类
    
            System.out.println("OuterClass=" + outer.outer);
    
            System.out.println("InnerClass=" + inner.outer);
    
            inner.communicate();//调用方法
    
            inner.inner_1();//调用方法
    
        }
    
    }
    
    /*
    (1)程序中定义外部类及其内部的成员变量和方法以及成员内部类。OuterClass类中的非静态方法outer_1()可以实例化InnerClass成员内部类,
    但非静态方法不能实例化成员内部类。在成员内部类InnerClass中communicate()方法可以访问外部类的静态变量或静态方法,
    语法格式为:“外部类名.this.属性(或方法())”。inner_1()方法可以调用外部类的私有方法。
    
    (2)在main()主方法中要实例化成员内部类,需要先实例化外部类。语法格式:Outer o=newOuter();Outer.Innerin=o.new.Inner()。
    */
    
    展开全文
  • java成员内部类

    2018-08-22 02:37:01
    1. 内部类 在Java中,可以将一个类定义在另一个类里面或者一...1.成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员),因为成员内部类默认持有一个外部类的引用。   2.当...

     

    1. 内部类

    Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。

    一句话:   定义在类中的类就是内部类。

    2. 成员内部类

    成员内部类是最普通的内部类,它定义于一个类的内部。

    2.1 特性

     

    1.成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员),因为成员内部类默认持有一个外部类的引用。

     

    2.当成员内部类拥有和外部类同名的成员变量或者方法时,即默认情况下优先访问成员内部类的成员(就近原则)。

     

    在同名的情况下需要以下方式访问:

    外部类对象.成员变量

    外部类对象.成员方法

     

    在不同名的情况下直接使用一下方式访问:

    成员变量

    成员方法

     

     

    3.在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问。

     

    成员内部类 对象名 = new 成员内部类();

    对象名.成员变量;

    对象名.成员方法;

     

    4.成员内部类是依附外部类而存在的,也就是说,如果要创建成员内部类的对象,前提是必须存在一个外部类的对象。

    外部类  外部对象变量名称 = new 外部类();

     

    应用: 

    利用成员内部类 实现 多个多个内部类的继承并进行私有化封装,写统一的方法进行访问... 进而调用功能...

    package 成员内部类练习;
    
    public class TestComputer {
    	public static void main(String[] args) {
    		Computer asus = new Computer();
    		asus.looking();
    		asus.countering();
    	}
    }
    package 成员内部类练习;
    
    public class Computer {
    	private String name;
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Computer() {
    		
    	}
    
    	public Computer(String name) {
    		this.name = name;
    	}
    	
    	private class Video extends Tv{
    		
    	}
    	
    	//看电视方法
    	public void looking() {
    		new Video().look();
    	}
    	
    	private class Counter extends JiSuanqi{
    		
    	}
    	
    	public void countering() {
    		new Counter().jia();
    		new Counter().cheng();
    		new Counter().chu();
    		new Counter().jian();
    	}
    	
    	
    }
    package 成员内部类练习;
    
    /**
     * 计算器
     * @author parker
     *
     */
    public class JiSuanqi {
    	public void jia() {
    		System.out.println("加法");
    	}
    	
    	public void jian() {
    		System.out.println("减法");
    	}
    	
    	public void cheng() {
    		System.out.println("乘法");
    	}
    	
    	public void chu() {
    		System.out.println("除法");
    	}
    }
    package 成员内部类练习;
    
    /**
     * 电视机
     * @author asus
     *
     */
    public class Tv {
    	public void look() {
    		System.out.println("看电视");
    	}
    }
    展开全文
  • java成员内部类依赖于外部类而存在,故创建内部类需要首先创建其关联的外部类。public class Test {public static void main(String args[]) {Inner obj = new Inner(); // 报错,No enclosing instance of type ...

    java成员内部类依赖于外部类而存在,故创建内部类需要首先创建其关联的外部类。

    public class Test {

    public static void main(String args[]) {

    Inner obj = new Inner(); // 报错,No enclosing instance of type Test is accessible.

    }

    class Inner {

    String str;

    void say() {

    System.out.println("From Inner class");

    }

    }

    }

    改为

    Test test = new Test();

    Test.Inner obj = test.new Inner();

    或将内部类改为静态内部类,静态内部类不依赖于外部类。

    public class Test {

    public static void main(String args[]) {

    Inner obj = new Inner();

    }

    static class Inner { // 静态内部类不依赖于外部类

    String str;

    void say() {

    System.out.println("From Inner class");

    }

    }

    }

    也可以在外部类中添加创建内部类的函数

    public class Test {

    public static void main(String args[]) {

    Test.Inner obj = new Test().getInner();

    }

    class Inner {

    String str;

    void say() {

    System.out.println("From Inner class");

    }

    }

    Inner getInner() {

    return new Inner();

    }

    }

    展开全文
  • Java成员内部类

    2016-03-24 14:44:07
    1、成员内部类 定义在另一个类的内部,而且与成员方法和属性平级叫成员内部类。  a 成员内部类不能定义静态属性 原因是 静态变量在编译时系统要给它分配内存 而内部类是在外部类编译后编译的 ,必须要有外部类存在...
  • Java 成员内部类

    2013-08-29 20:08:08
    Java成员内部类仅仅定义在方法体中,生命周期也随着方法的结束而结束。 当定义在静态方法中时,就是静态内部类;定义在成员方法中时,就是成员内部类。 package com.mode; public class LocalInnerClass { ...
  • 1、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,...Java成员内部类(以猫狗为例): class Dog{ class cat{ } } class Z{ public static void main(String args[]){ Dog.cat S1=new D
  • 1007 Java成员内部类

    2016-10-19 20:36:21
    Java 成员内部类目录用 [TOC]来生成目录: Java 成员内部类 目录 成员内部类 成员内部类 成员内部类的代码块1 成员内部类被静态修饰的代码块2 练习题成员内部类成员内部类成员内部类: 外部类名.内部类名 对象名 = ...
  • java成员内部类的使用
  • Java成员内部类在项目中也是常常使用到,很多人不知道成员内部类是什么,下面是Java成员内部类的定义:成员内部类指的是在某个类中,在方法之外的非静态类,被称之为Java成员内部类如下就是java成员内部类的基本组成...
  • Java中的成员内部类(实例内部类):相当于类中的一个成员变量,下面通过一个例子来观察成员内部类的特点public classOuter {//定义一个实例变量和一个静态变量private inta;private static intb;//定义一个静态方法和...
  • Java成员内部类和静态内部类有什么区别?解答。。。
  • java 成员内部类的使用规范 java 成员内部类的使用规范
  • java成员内部类学习笔记**java编程思想有如下解释:可将一个类定义置入另一个类定义中。这就叫作“内部类”。内部类对我们非常有用,因为 利用它可对那些逻辑上相互联系的类进行分组,并可控制一个类在另一个类里的...
  • Java 成员内部类总结

    2020-11-11 16:12:59
    记:内部类的分类 1、成员内部类; 2、局部内部类; 3、静态内部类; 4、匿名内部类。 一、什么是成员内部类? 在一个类的成员位置——成员变量、成员方法同等级的位置,再写一个类。
  • 成员内部类、静态嵌套类、方法内部类、匿名内部类 内部类共性 内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。 内部类不能用普通的方式访问。内部类是...
  • JAVA成员内部类详解

    2020-02-01 14:14:08
    在阅读JAVA一些数据结构源代码的时候,经常会发现成员内部类的使用,如Hashmap中的Node和TreeNode,所以我们就来把它归纳总结一下 1.成员内部类 (1)内外部的访问权限 构造一个外部类和内部类 public class Out { ...
  • * 注意:成员内部类不能定义静态成员,但可以定义静态常量成员。 */ public static final int age = 22;//正确 //public static int age = 22;//错误 public void out(){ System.out.println(age);//默认...
  • 分四种:成员内部类、局部内部类、静态内部类和匿名内部类。 1、成员内部类: 即作为外部类的一个成员存在,与外部类的属性、方法并列。 注意:成员内部类中不能定义静态变量,但可以访问外部类的所有成员。 public ...
  • 经过整理搜集,对java 成员内部类有了初步的了解,在一个类中成员变量位置创建另一个类,叫做成员内部类成员内部类分:静态内部类与非静态内部类 // 非态内部类 class A{ class B{ } } //静态内部...
  • 内部类:成员内部类 (静态的,非静态的) 和 局部内部类(位置:方法内,块内,构造器内) * 4.成员内部类: * 里面属性,方法,构造器等 * 修饰符:private,default,protect,public,final,abstract *
  • 下面是匿名内部类的调用 如果接口里只有一种 抽象方法 那这样覆盖重写 还挺方便 … 起码不用 建立class 实现类了… 但这样 接口文件 就会多了啊 感觉很鸡肋啊 ...
  • 一、成员内部类 二、局部变量内部类 三、匿名内部类 (1)接口中的匿名内部类 (2)抽象中的匿名内部类 四、访问修饰符 一、成员内部类 public class Person { boolean state = true;//生命状态 public...
  • [修饰符] class 外部类名 [extends 外部类的父类] [implements 外部类的父接口们] { [修饰符] class 内部类名 [extends 非静态内部类自己的父类] [implements... 静态内部类成员列表; } // 外部类的其他成员列表 }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,930
精华内容 5,572
关键字:

java成员内部类

java 订阅