内部类和匿名内部类
来源:互联网 发布:淘宝宝贝命名规则 编辑:程序博客网 时间:2024/05/18 19:22
内部类和匿名内部类
监听器类、线程,经常使用(也许你经常用,但是你不知道他们是什么)
内部类
什么是内部类?
(定义在类里面的类)
内部类使用方法?
一个最简单的内部类
class A{class B{}}
内部类编译后,多出的文件
比别人多了一个A$B.class
生成内部类对象的方法?
class A{int i;class B{int j;int funB(){int result = i + j;//完整写法 int result = A.this.i = this.j;(这两个this也是不一样的,一个是A的,一个是B的)//总之记住:内部类可以随意使用外部类的变量return result;}}}
内部类和继承是没有任何关系的,B是A的内部类,B可以使用A中的成员变量,但是B并不是继承了A
class Test{public static void main(String args []){A a = new A();A.B b = a.new B();a.i = 3;b.j = 1;int result = b.funB();System.out.println(result);A.B b2 = new A().new B();}}
匿名内部类
interface A{public void doSomething();}
class B{public void fun(A a){System.out.println("B类的fun函数");a.doSomething();//A类型的参数,当然可以用a的方法}}
class AImpl implements A{public void doSomething(){System.out.println("AImpl doSomething");}}
class Test{public static void main(String args []){AImpl ai = new AImpl();A a = ai;//向上转型B b = new B();b.fun(a);}}
运行结果
匿名内部类写法
A接口是不能够new的。但是后面有了{}之后。神奇的事情发生了,请看下面写法。
new A(){......}
名字解释:显示没有名字,然后在Test里面,又是内部类,然后就叫做:匿名内部类
这种写法意义:就是实现(implements)接口A,并重写方法;
new A(){......}就是实现了接口A并向上转型的参数;【如果不懂,请参看对比:上面Test.java+AImpl.java<----------> 下面Test.java写法】
class Test{public static void main(String args []){// AImpl ai = new AImpl();// A a = ai;//向上转型B b = new B();// b.fun(a);//匿名内部类写法:有点像写button监听方法的样子b.fun(new A(){public void doSomething(){System.out.println("匿名内部类");}});}}
如果看了上面,你还不懂啊?看视屏。讲师说得真心不错诶。
0 0
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- 匿名内部类和内部类
- 内部类和匿名内部类
- 内部类和匿名内部类
- java 内部类 和 匿名内部类
- java 内部类和匿名内部类
- 内部类和匿名内部类
- 线段树模板
- Android Studio在线升级(不用翻墙!)
- vs异常:invalid allocation size
- 实战 SQL Server 2008 日志传送(Log Shipping)
- 2D激光SLAM算法比较+cartographer
- 内部类和匿名内部类
- Spring MVC接收中文乱码问题(追加中)
- 关于百度地图实现定位的两种方式(baiduSDK 和 Service+BaiduSDK)
- 变更苹果账户企业名称--干货呦
- OSS
- <stdexcept> 头文件中定义的标准异常类
- 第九周项目四-广义表算法库及应用
- 高仿支付宝9.9.2版本生活模块界面来讲解CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout
- Linux Kernel IOCTL