如何定义抽象方法:需要使用一个关键词:abstract
abstract class Person { public abstract void run(); }特点:无法实例化抽象类。
Person p = new Person(); // 编译错误继承了抽象类的子类必须实现所有抽象类中的方法。
如果一个抽象类没有属性只有方法,则可以将其定义为接口。 接口比抽象类还要抽象。因此接口中所有方法都是抽象方法。 如何定义接口:使用关键字interface
interface Person { void run(); String getName(); }如何实现接口:使用关键字implements
class Student implements Person { private String name; public Student(String name) { this.name = name; } @Override public void run() { System.out.println(this.name + " run"); } @Override public String getName() { return this.name; } }一个子类只能有一个父类,但一个类可以实现多个接口。
接口与接口之间的继承:
interface Hello { void hello(); } interface Person extends Hello { void run(); String getName(); }default关键字: 在接口中,没有关键字修饰的都是抽象方法,都不能实现。 如果要实现接口中的方法,需要用default关键字。
interface Person { String getName(); default void run() { System.out.println(getName() + " run"); } }实现类可以不必覆写default方法。default方法的目的是,当我们需要给接口新增一个方法时,会涉及到修改全部子类。如果新增的是default方法,那么子类就不必全部修改,只需要在需要覆写的地方去覆写新增方法。