java 接口和抽象类 特点
2016-08-06 本文已影响99人
else05
- 抽象类:
[public] abstract class ClassName {
// 抽象方法
abstract void fun();
}
- 抽象类必须在类前用
abstract关键字修饰 - 抽象方法必须用
abstract关键字进行修饰(抽象方法只有声明,没有实现) - 抽象类中可以有变量或具体方法
- 抽象方法必须为
public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。 - 抽象类不能用来创建对象;
- 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为
abstract类。
- 接口:
[public] interface InterfaceName {
// ...
}
// 接口中可以有多继承,是java中唯一可以多继承的地方
[public] interface InterfaceName extends 接口1,接口2... {
// ...
}
- 变量会被隐式地指定为
public static final变量,并且只能是public static final变量,用private修饰会报编译错误 - 方法会被隐式地指定为
public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、final等修饰会报编译错误) - 接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法
可以把接口理解成是一种极度抽象的类型,它比抽象类更加“抽象”
接口中不能使用implements, 但是可以使用extends继承多个接口,是java中唯一可以多继承的地方