黑马程序员—内部类
2013-09-25 13:09
190 查看
1,内部类可以直接访问外部类的成员。包括私有。原因是内部类持有外部类的引用。外部类名.this.
2,外部类要访问内部类。需要建立内部类对象。其他类访问其内部类方式。Outer.Inner in =new Outer().new Inner();如果内部类被私有。则无法访问。只能被内部类的外部类访问。
3,内部类在成员上被static修饰时。只能访问外部类的静态成员。
注意:内部类定义了静态成员。内部类也必须是静态的。
--------外部类的静态方法访问内部类。内部类也必须是静态的。
4,内部类被定义在局部时,不可被成员修饰符修饰,可以直接访问外部类成员,因为持有外部类引用。但是不能访问所在局部的变量,除非被final修饰。如果想调用内部类必须在局部创建引用,调用其方法。
匿名内部类就是内部类的简写格式,前提是必须继承一个类或者实现了一个接口。用父类或者接口的名字直接建立子类对象,定义子类内容。
匿名内部类可以用父类的引用的。但是这个引用只能调用父类的方法和成员。无法调用子类的特有方法。
2,外部类要访问内部类。需要建立内部类对象。其他类访问其内部类方式。Outer.Inner in =new Outer().new Inner();如果内部类被私有。则无法访问。只能被内部类的外部类访问。
3,内部类在成员上被static修饰时。只能访问外部类的静态成员。
注意:内部类定义了静态成员。内部类也必须是静态的。
--------外部类的静态方法访问内部类。内部类也必须是静态的。
class Outer{ int x=3;//Out.this.x class Inner{ int x=4;//this.x void method(){ int x=5; System.out.print(x); } } }
4,内部类被定义在局部时,不可被成员修饰符修饰,可以直接访问外部类成员,因为持有外部类引用。但是不能访问所在局部的变量,除非被final修饰。如果想调用内部类必须在局部创建引用,调用其方法。
class Outer{ void method(final int y){ final int x=4; class Inner{ void show(){ System.out.println(x+y); }; } Inner i=new Inner(); i.show(); }; }
匿名内部类就是内部类的简写格式,前提是必须继承一个类或者实现了一个接口。用父类或者接口的名字直接建立子类对象,定义子类内容。
匿名内部类可以用父类的引用的。但是这个引用只能调用父类的方法和成员。无法调用子类的特有方法。
abstract class Inter{ void method(); } Test{ } Test.function().method()的理解。因为没有new。所以function 一定是静态的。因为function有括号。所以他一定是一个方法。 而且返回值是一个Inter的子类对象。
相关文章推荐
- 黑马程序员 面向对象 Object与内部类
- 黑马程序员_内部类
- 黑马程序员——java复习总结——多态和内部类
- 黑马程序员一java中内部类的结构分析实例
- 黑马程序员-------内部类
- 黑马程序员——内部类不能有静态的成员的原因
- 黑马程序员-面向对象(抽象类、接口与内部类)
- 黑马程序员一、内部类
- 黑马程序员——内部类的总结
- 黑马程序员_内部类和包
- 黑马程序员——面向对象-内部类
- 黑马程序员--内部类
- 黑马程序员——内部类
- 黑马程序员_六 【final】【static】【内部类】【main】
- 黑马程序员_Java基础[17]_Object、内部类
- 黑马程序员_内部类 异常 包
- 黑马程序员-Integer类中的内部类IntegerCache
- 黑马程序员------毕老师视频笔记第九天------面向对象(内部类)
- 黑马程序员—java基础学习--Object类,内部类
- 黑马程序员--匿名内部类问题