成员内部类的访问
2016-01-06 13:31
239 查看
1:成员内部类
成员内部类是外部类的成员,必须通过外部类来访问
格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象
一般内部类不能让外部类访问,可以用private修饰
注意:
静态内部类访问的外部类对象必须用静态修饰!!!!(不管使用它里面的静态方法还是非静态方法都能访问外部累得静态成员)
静态内部类(外部类的内部类是静态的类)的方法可以是静态方法也可以是非静态方法
类用静态修饰之后是不能用外部对象访问的
private为了保证数据的安全性
static为了便于访问数据
外部类和内部类同名的时候可以这样访问
2:匿名内部类
成员内部类是外部类的成员,必须通过外部类来访问
格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象
package com.imooc; class Outer{ public int num = 10; class Inner{ public void method(){ System.out.println("num = "+num); } } } public class Demo1 { public static void main(String[] args){ Outer.Inner oi = new Outer().new Inner(); oi.method(); } }
一般内部类不能让外部类访问,可以用private修饰
package com.mingming; class Body{ private class Heart{ public void operator(){ System.out.println("heart"); } } public void method(){ Heart h = new Heart(); h.operator(); } } public class Demo { public static void main(String[] args){ Body b = new Body(); b.method(); } }
注意:
静态内部类访问的外部类对象必须用静态修饰!!!!(不管使用它里面的静态方法还是非静态方法都能访问外部累得静态成员)
静态内部类(外部类的内部类是静态的类)的方法可以是静态方法也可以是非静态方法
类用静态修饰之后是不能用外部对象访问的
private为了保证数据的安全性
static为了便于访问数据
外部类和内部类同名的时候可以这样访问
package com.mingming; 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); //通过外部类名限定this对象!!!!!!!!!!!!! System.out.println(Outer.this.num); } } } public class Demo { public static void main(String[] args){ Outer.Inner oi = new Outer().new Inner(); oi.show(); } }
2:匿名内部类
package com.mingming; interface Inter{ public abstract void show(); public abstract void show2(); } class Outer{ public void method(){ Inter i = new I
package com.mingming; interface Inter{ void show(); } class Outer{ public static Inter method(){ return new Inter(){//不要忘记这里有一对括号!!!!!!!! public void show(){ System.out.println("show"); } }; } } public class Demo { public static void main(String[] args){ Outer.method().show();//不要忘记method后面有一对括号 } }
nter() { public void show(){ System.out.println("show"); } public void show2(){ System.out.println("show2"); } }; i.show(); i.show2(); } } public class Demo { public static void main(String[] args){ Outer o = new Outer(); o.method(); } }
相关文章推荐
- ATL入门
- Android:单选按钮
- 一个linux内核编译错误的解决
- 关于android 联系人数据库处理
- python中if __name__ == '__main__': 的解析
- nginx的编译安装以及启动脚本编写
- SQL Server里的 ISNULL 与 NULLIF
- C#之序列化和反序列化
- Android:对话框
- spring beanFactory和FactorBean
- 不做不错的危害远甚于多做多错的损失
- jsreverse和sort排序
- android studio下载地址
- Linux下Gcc生成和使用静态库和动态库详解
- canvas组件
- IDEA里面添加lombok插件,编写简略风格Java代码
- 人生第一次写的代码
- Bootstrap按钮菜单
- 大数据系列第五课:scala高阶
- 静态常量(static final)在class文件里是如何的呢?