疯狂Java学习笔记(011)
abstract有哪些非法组合:
- final : final修饰的方法,子类不能重写,abstract就是想让子类重写.二者冲突!
- private : 私有的成员,子类不能看见,就没有办法重写!
- static : 静态的方法可以直接通过类名调用,而调用一个抽象类的抽象方法是没有方法体的.没有意义!
抽象类中是否可以没有抽象方法?
可以!!!
Java中判断一个类是否是抽象类,就是看是否有abstract关键字修饰!!!
没有抽象方法的抽象类的作用:
1.不让外界随便的创建对象
2.可以方便对接口的使用!(具体参看java.awt.event.WindowAdaptor的源码)
抽象类作为方法的参数类型和返回值类型
作为参数类型:必须传递一个抽象类实现子类的对象
作为方法的返回值类型:必须返回的是这个抽象类实现子类的对象!
接口的由来:
- 接口是Java中对类的最高级抽象的机制:
- 对类的成员方法进行抽象,形成抽象方法的是抽象类.
- 在抽象类基础上进行再次抽取,把拥有共同的成员变量值的成员变量和方法都进行抽取的话,就是接口!!!
Java中接口和类是同等级别的:
一个源文件中只能有一个public修饰的接口
接口被编译后形成一个单独的.class字节码文件!
接口的定义:
接口中只能有两个部分:
1.常量:
2.抽象方法:
接口的使用:
- 接口和抽象类一样,都不能实例化对象!
- 必须通过实现子类实例化对象,才能使用其中的抽象方法!
子类实现接口:
- 通过implements关键字,
- Java中的子类和接口之间是可以多实现的!!!
- 如果一个子类没有实现接口中的所有的抽象方法那么子类中就有一些抽象方法,此时这个子类依然是一个抽象类,就必须用abstract关键字修饰!!!
public class 子类名 impliments 接口1,接口2...{
//实现子类必须实现所有接口中的所有抽象方法!!!
//否则该子类依然是一个抽象类!
}
接口应用:
1.方法需要基本数据类型,直接传值
2.方法需要同种类型的多个基本数据类型的参数,封装成一个数组
3.方法需要多个数据,但是类型不相同.可以把数据封装成类,传递对象即可
4.如果方法只关心形参的方法,而不关心它的成员变量.把形参定义成接口!!!
接口定义在方法的形参上,将来传递的是这个接口的实现子类对象!!