目的:抽象类和接口的存在是为了规定继承/实施它们的类的方法。
抽象类:
abstract class Animal{
protected abstract void run();
public void eat(){
System.out.println("吃啊吃");
}
}
class Human extends Animal{
public static void main(String[] args) {
Animal a = new Human();
a.eat();
a.run();
}
@Override
protected void run(){
System.out.println("跑啊跑");
}
}
1、使用 abstract 关键词进行修饰,方法包括抽象方法和普通方法,其中抽象方法没有方法体。
2、继承了抽象类的类必须重写所有的抽象方法。也因为这个原因,抽象方法的修饰符不能是private。
接口:
interface actor{
void lay();
}
class Human2 implements actor{
public static void main(String[] args) {
Human2 human = new Human2();
human.lay();
}
@Override
public void lay(){
System.out.println("瘫着");
};
}
1、接口中未定义的方法不需要修饰符,默认的修饰符就是 public
2、Java8 之后接口中还可以定义 static 和 default 方法,以前仅能有未定义方法;
3、一个类只能继承一个抽象类,但可以继承多个接口。