黑马程序员技术交流社区
标题:
接口与抽象类
[打印本页]
作者:
lx19921105
时间:
2014-4-9 23:23
标题:
接口与抽象类
看书自己做了下总结:
1. 抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更彻底,则可以提炼出一种更加特殊的”抽象类”—接口interface,接口中不能包含普通方法,接口里的所有方法都是抽象方法.
2. 接口定义语法
修饰符可以是public或省略,若省略则默认包权限.
接口命名应由多个有意义的单词连缀而成,每个单词首字母大写.
一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类.
3. 接口里没有构造器和初始化块,因此接口里定义的Field只能在定义时指定默认值.
接口里定义Field采用如下两行代码的结果完全一样.
Int max=50; publick static final int max=50;
4. 接口里定义的方法只能是抽象方法,因此系统会自动为其增加abstract修饰符;由于接口里的方法全部是抽象方法,因此接口里不允许定义静态方法,即不可使用static修饰接口里定义的方法.接口里的方法总是使用publick abstract来修饰.
5. 从某个角度来看,接口可被当成一个特殊的类,因此一个java源文件里最多只能有一个public接口,而且主文件名应与接口名相同.
6. 接口支持多继承,类是单继承,但是类可以实现多个接口 关键字implements
7. 一个类实现了一个或多个接口之后,必须完全实现这些接口里所定义的全部抽象方法(也就是重写);否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义成抽象类.
实现接口方法时,必须使用public修饰符.
8. 接口和抽象类比较: 相同点
接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承.
接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法.
不同点
接口里只能包含抽象方法,不包含已经提供实现的方法;抽象类则完全可以包含普通方法.
接口里不能定义静态方法;抽象类里可以定义静态方法.
接口只能定义静态常量Field,不能定义普通Field;抽象类里则既可以定义普通Field,也可以定义静态常量Field.
接口里不包含构造器;抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作.
接口里不能包含初始化块;但抽象类则完全可以包含初始化块.
一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java单继承的不足.
作者:
帅哥哥
时间:
2014-4-11 17:48
总结的挺好的,话说这里接口的口字好大哦!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2