java基础学习要点三:内部类
来源:互联网 发布:程序员的未来规划 编辑:程序博客网 时间:2024/05/16 14:01
1. 内部类访问规则
● 内部类可以直接访问外部类中的成员,包括私有。之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this
● 外部类要访问内部类,必须建立内部类对象
/*内部类示例*/class Outer {int x = 3;class Inner {int x = 4;void function(){System.out.println("inner:" + Outer.this.x);}}void method() {System.out.println(x);}}public class InnerClassDemo {public static void main(String[] args) {Outer.Inner in = new Outer().new Inner();in.function();}}
2. 静态内部类
● 当内部类被static修饰后,只能直接访问外部类中的static成员
● 注意:当内部类中定义了静态成员,该内部类必须是static的。
当外部类中的静态方法访问内部类时,内部类也必须是static的。
/*静态内部类示例*/class Outer {static int x = 3;static class Inner {void function(){System.out.println("inner:" + x);}}void method() {System.out.println(x);}}public class InnerClassDemo {public static void main(String[] args) {new Outer.Inner().function();}}
3. 内部类定义原则
● 当内部类中定义了静态成员,该内部类必须是static的。当外部类中的静态方法访问内部类时,内部类也必须是static的。
● 当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事务在使用外部事物的内容。
4. 局部内部类
● 内部类定义在局部时,不可以被成员修饰符修饰。
● 可以直接访问外部类中的成员,因为还持有外部类中的引用。
● 不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。
/*局部内部类示例*/class Outer {int x = 3;void method(final int a) {final int y = 4;class Inner {void function() {System.out.println(y);}}new Inner().function();}}public class InnerClassDemo {public static void main(String[] args) {Outer out = new Outer();out.method(7);out.method(8);}}
5. 匿名内部类
/*匿名内部类:1 匿名内部类其实就是内部类的简写格式。2 定义匿名内部类的前提:内部类必须是继承一个类或者实现接口。3 匿名内部类的格式:new 父类或者接口(){定义子类的内容}4 其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。5 匿名内部类中定义的方法最好不要超过3个。*/abstract class AbsDemo {abstract void show();}class Outer {int x = 5;void function() {new AbsDemo() {void show() {System.out.println(x);}}.show();}}public class NoNameInnerClassDemo {public static void main(String[] args) {new Outer().function();}}
- java基础学习要点三:内部类
- 基础--java内部类学习
- java基础学习-内部类
- java基础要点(9)面向对象-内部类
- java 内部类要点总结
- 黑马程序员:java学习要点-内部类和异常
- Java基础学习笔记_内部类
- JAVA基础学习(九)--内部类
- Java基础学习《第十章 内部类》
- java基础学习(九)内部类
- java基础 内部类
- java基础--内部类
- java基础<内部类>
- java基础--内部类
- Java基础 内部类
- java基础:内部类
- Java基础----内部类
- java基础--内部类
- 在大学的一点感想
- java基础学习要点二:反射
- 逆向输出
- 研究生如何做好科研和发表文章(二)
- eclipse和vs2010 (visual studio)和BBEdit自动排版快捷键(auto format shortcuts)
- java基础学习要点三:内部类
- java基础学习要点四:设计模式
- 冒泡排序
- 解决SqlServer "设备激活错误,请使用 WITH MOVE 选项来标识该文件的有效位置"
- 研究生如何做好科研和发表文章(三)
- java基础学习要点五:事件监听
- java基础学习要点六:多线程
- 研究生如何做好科研和发表文章(四)
- 请使用RESTORE FILELISTONLY来列出逻辑文件名。RESTORE DATABASE 操作异常终止