包含一个或多个抽象方法的类称为抽象类。抽象类也必须声明abstract要害字。抽象类的使用有着一些限制,不能创建抽象类的实例。假如子类实现了抽象方法,则可以创建该子类的实例对象。要是子类也不实现的话,这个子类也是抽象类,也不能创建实例。
接口的实现用关键字implement 而不是extends.假如用了extends的那就是继承这个接口。那么那个子类也是接口,是原来的子接口。
//声明一个接口
public interface Say {
public void sayMessage();
}
//两个实现类
public class SayHello implements Say {
public void sayMessage() {
System.out.println("hello");
}}
public class SayHi implements Say {
public void sayMessage() {
System.out.println("Hi");
}}
//测试类
public class TestSay {
public static void main(String[] args) {
//同样都是用Say这个接口类型实例,却可以输出两个结果
Say say = new SayHello();
say.sayMessage();
Say say1 = new SayHi();
say1.sayMessage();
}}
接口还有一个重要的作用,java语言中只有单继承,只能从一个父类继承。单继承的好处是,一旦继承的太多了,改了一个类子类就都变了。牵一发,而动全身。那么假如我们想继续多个父类的特性就用接口。