黑马程序员——Java笔记--内部类
2015-11-24 23:16
656 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事物在使用外部事物的内容。
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有
成员内部类可以被private修饰,将内部类在外部类中进行封装
外部类要访问内部类的成员,必须创建对象
访问方式是:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
成员内部类被static修饰外部类中的static成员
访问方式是: 外部类名.内部类名 对象名 = 外部类名.内部类对象;
(Outer.Inner oi = new Outer.Inner();)
注意:
当内部类中定义了静态成员,该内部类必须是static;
当外部类中的静态方法访问内部类时,内部类也必须是static;
局部内部类不可以被成员修饰符修饰。
运行结果:
总结:内部类之所以能访问到外部类的成员,是因为它能获取到外部类的引用(外部类名.this 也就是上程序中的Outer.this)
局部内部类访问局部变量必须用final修饰
因为当调用这个方法时,局部变量如果没有用final修饰,它的生命周期和方法的生命周期是一样的,当方法弹栈后,这个局部变量也会消失,那么如果局部内部类还没有马上消失,想用这个局部变量,就没有了。如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用。
注意:但是jdk1.8取消了这个规定,我们的老师认为只是一个bug。
当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事物在使用外部事物的内容。
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有
成员内部类可以被private修饰,将内部类在外部类中进行封装
外部类要访问内部类的成员,必须创建对象
访问方式是:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
成员内部类被static修饰外部类中的static成员
访问方式是: 外部类名.内部类名 对象名 = 外部类名.内部类对象;
(Outer.Inner oi = new Outer.Inner();)
注意:
当内部类中定义了静态成员,该内部类必须是static;
当外部类中的静态方法访问内部类时,内部类也必须是static;
局部内部类不可以被成员修饰符修饰。
class Outer { public int num = 10; class Inner { public int num = 20; public void show() { int num=30; System.out.println(num); System.out.println(this.num); System.out.println(Outer.this.num); } } public static void main(String[] args) { Outer.Inner oi = new Outer().new Inner(); oi.show(); } }
运行结果:
总结:内部类之所以能访问到外部类的成员,是因为它能获取到外部类的引用(外部类名.this 也就是上程序中的Outer.this)
局部内部类访问局部变量必须用final修饰
因为当调用这个方法时,局部变量如果没有用final修饰,它的生命周期和方法的生命周期是一样的,当方法弹栈后,这个局部变量也会消失,那么如果局部内部类还没有马上消失,想用这个局部变量,就没有了。如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用。
注意:但是jdk1.8取消了这个规定,我们的老师认为只是一个bug。
相关文章推荐
- 黑马程序员—java开发前奏—java语言概述
- 不汇报是职场发展的绊脚石
- 怎么成为一个优秀的程序员,而不是一个优秀的码农?
- 大部分人都会做错的经典JS闭包面试题
- 黑马程序员——IO
- 2016 JAVA与Android面试题整理
- 黑马程序员——Foundation框架NSArray和NSMUtableArray的介绍及使用
- java中String s="abc"及String s=new String("abc")-----------面试必备
- 黑马程序员--线程间的通信
- 黑马程序员——Foundation框架——NSFileManager介绍及使用
- java面试题
- 【转】职业生涯规划-技术还是管理
- 获得 1000 个赞的程序员高薪职业建议
- 黑马程序员 JavaSE-08 Collection(集合)
- 经典面试题之复杂链表复制的简单实现
- 十大编程算法助程序员走上高手之路
- 面试总结(一)
- 黑马程序员——C基础——关键字、常量、变量、运算符
- java 基础面试题
- JAVA程序员最常犯的10个错误