抽象类和接口
抽象类
一些父类中的成员方法没有具体的工作,而是由子类中重写的该方法来完成一些实际工作。
因此我们可以把该方法定义为抽象方法,包含抽象方法的类为抽象类。
- 抽象类和抽象方法均由 abstract 关键字修饰。
- 抽象类中也可以包含其他的非抽象方法和属性;非抽象方法和普通方法一样,可以重写也可以通过子类直接调用。
//定义抽象类
abstract class Test {
public String name;
public void eat(){
System.out.println("eat()!");
}
//抽象方法
abstract public void voice(); //抽象方法没有具体实现代码,且不能用private修饰符修饰
}
class Cat extends Animal{
public void voice() {
System.out.println("喵");
}
}
public class Test{
public static void main(String[] args) {
Animal animal = new Cat();
animal.eat();
animal.voice();
}
}
接口
接口是抽象类的更进一步。
- 抽象类可以包含抽象方法和非抽象方法以及属性,而接口包含的方法只能包含抽象方法,属性只能包含静态属性。
- 使用interface定义接口;
- 接口中包含的方法一定是抽象方法,因此 abstract 可以省略;
- 接口中的方法一定是 public
修饰的,因此 public 可以省略; 继承接口时,使用 implement 关键字;
在调用的时候创建一个接口的引用,对应到一个对象的实例;
//定义接口
interface IShape{
//静态常量