java--接口和内部类
2016-04-28 20:41
309 查看
接口和内部类并没有什么必然的联系,它们的共同点,都是java比较有用的高级点的技能
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
接口技术
A 接口特性
1 接口不是类,不能使用new来进行实例化
2 可以定义接口变量 ,这个变量必须引用,实现了这个接口的类对象
3 可以使用instanceof来检查,某个对象是否实现了某个特定的接口,否则不能赋值接
口变量
4 接口也可以像类的继承机制一样,进行扩展。
也是使用 extends关键字
5 接口里不能包含实例变量、静态方法。因为接口不嫩实例化啊,所以哪来的实例变
量。
6 接口可以包含常量。 所以,有可能有些接口没有定义方法,只是定义了一些常量。
7 接口中的方法,都自动设置为 public
接口中的域,都自动设置成public static final
8 一个类智能集成一个超类,但是可以实现多个接口
9 一个重要的接口:Cloneable接口,一个类如果实现了Cloneable接口,那么Object类中的clone方法,就可以创建类对象的拷贝。(未完,待续,理解的不深)
10 接口和回调函数:(未完,待续,理解的不深)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
内部类机制
内部类的用途
内部类的种类和特性
~~~~~~~~~~~~~~~~~~~~~~~~~~~
内部类的用途
1 普通的内部类,就是直接在某个类的内部进行定义的。
然后,这个内部类的对象的方法,可以访问创建它的外围类的所有域,包括private域
内部类和外围类之间的联系
1 内部类如果没有构造函数,那么系统自动为它添加了个无参构造函数,并且把外围类的对象作为构造函数的参数。
2 常见内部类使用方式,就是在外围类的某个方法中,new一个内部类的对象,以此来建立关系。这样,系统把外部类悄悄的通过内部类的构造函数,传给了内部类的对象,所以内部类对象才可以调用外部类的任何域
2 局部内部类
就是把类的定义放在了 外围类的某个函数中,如外围类start()方法中,这样对外部世界就可以完全地隐藏起来了。 除了start方法,其他方法都不知道这个类的存在
使用场景:当这个内部类的名字只是在start方法中,new一次,创建了一个该类型对象。
优点:
一、对外部世界就可以完全地隐藏起来了
二、它不仅可以访问外部类,还可以*访问局部方法中的局部变量(包括形参)*前提是:这些局部变量被声明为final。原理:在局部类内建立了 局部变量的一份拷贝,所以即使局部变量被释放了。。。(不太懂,胡言乱语,继续加深理解)
3 匿名类
局部内部类的使用再深入一步,假设只创建这个类的一个对象,那么就不必命名了。
4 静态内部类
如果,内部类和外围类的对象不会扯上关系,不需要内部类引用外围类对象。那么就把这个内部类声明为static的。
使用场景:如,防止类名冲突的话,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
内部类种类:
普通内部类,局部内部类,匿名类,静态内部类
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
接口技术
A 接口特性
1 接口不是类,不能使用new来进行实例化
2 可以定义接口变量 ,这个变量必须引用,实现了这个接口的类对象
3 可以使用instanceof来检查,某个对象是否实现了某个特定的接口,否则不能赋值接
口变量
4 接口也可以像类的继承机制一样,进行扩展。
也是使用 extends关键字
5 接口里不能包含实例变量、静态方法。因为接口不嫩实例化啊,所以哪来的实例变
量。
6 接口可以包含常量。 所以,有可能有些接口没有定义方法,只是定义了一些常量。
7 接口中的方法,都自动设置为 public
接口中的域,都自动设置成public static final
8 一个类智能集成一个超类,但是可以实现多个接口
9 一个重要的接口:Cloneable接口,一个类如果实现了Cloneable接口,那么Object类中的clone方法,就可以创建类对象的拷贝。(未完,待续,理解的不深)
10 接口和回调函数:(未完,待续,理解的不深)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
内部类机制
内部类的用途
内部类的种类和特性
~~~~~~~~~~~~~~~~~~~~~~~~~~~
内部类的用途
1 普通的内部类,就是直接在某个类的内部进行定义的。
然后,这个内部类的对象的方法,可以访问创建它的外围类的所有域,包括private域
内部类和外围类之间的联系
1 内部类如果没有构造函数,那么系统自动为它添加了个无参构造函数,并且把外围类的对象作为构造函数的参数。
2 常见内部类使用方式,就是在外围类的某个方法中,new一个内部类的对象,以此来建立关系。这样,系统把外部类悄悄的通过内部类的构造函数,传给了内部类的对象,所以内部类对象才可以调用外部类的任何域
2 局部内部类
就是把类的定义放在了 外围类的某个函数中,如外围类start()方法中,这样对外部世界就可以完全地隐藏起来了。 除了start方法,其他方法都不知道这个类的存在
使用场景:当这个内部类的名字只是在start方法中,new一次,创建了一个该类型对象。
优点:
一、对外部世界就可以完全地隐藏起来了
二、它不仅可以访问外部类,还可以*访问局部方法中的局部变量(包括形参)*前提是:这些局部变量被声明为final。原理:在局部类内建立了 局部变量的一份拷贝,所以即使局部变量被释放了。。。(不太懂,胡言乱语,继续加深理解)
3 匿名类
局部内部类的使用再深入一步,假设只创建这个类的一个对象,那么就不必命名了。
4 静态内部类
如果,内部类和外围类的对象不会扯上关系,不需要内部类引用外围类对象。那么就把这个内部类声明为static的。
使用场景:如,防止类名冲突的话,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
内部类种类:
普通内部类,局部内部类,匿名类,静态内部类
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树