抽象类
-
abstract关键字修饰的类就是抽象类,抽象类中可以定义抽象方法。抽象方法没有方法体,只有修饰符、返回类型以及方法名和参数列表。反之,普通类中不能存在抽象方法 -
抽象类中可以写普通方法,普通类中不能写抽象方法 -
抽象类不能new出来,只能靠子类去extends,所以抽象类必须被继承。其子类有几个算几个,都必须实现这个抽象父类的抽象方法,除非子类也是抽象类 -
在java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类可以实现多个接口 -
抽象类也存在构造器,但是构造方法和类方法(static修饰的方法,也即静态方法)不能声明为抽象方法。其实好理解,因为构造方法是在new对象时执行的,而抽象类不能被new,所以冲突,故构造方法不能是抽象方法;而static修饰的方法不能被子类重写,而抽象方法又必须被重写,所以也冲突
接口
- 普通类中只有具体实现(普通方法),抽象类中既有具体实现(普通方法)又有规范(抽象方法),接口中只有规范(抽象方法)。因为默认接口中只有抽象方法,相当于默认加了public abstract,所以开发时一般只写方法名和参数列表
- 接口中定义的属性默认加了public static final,也就是说默认都是常量
- 类声明的关键字是class,接口声明的关键字是interface
- 接口必须有实现类,实现类命名时一般以impl结尾,使用implements关键字来实现接口,必须重写接口的所有抽象方法
- 一个类可以实现多个接口,但是所有的接口的方法都必须被其实现类重写
- 接口不能被实现,接口中没有构造方法
|