抽象类和接口的一些小问题

抽象类

关键字abstract
抽象类中可以没有抽象方法
没有抽象构造方法,也没有抽象静态方法
抽象类中可以有非抽象的构造方法,创建子类的实例时可以调用
抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
抽象类和接口的一些小问题

接口

定义接口使用interface关键字
实现接口使用implements关键字

接口不能被实例化
接口的目的之一是订立一个标准
接口没有构造方法,不能被实例化
接口中的成员变量默认都是public static final的,必须显示初始化
接口中的所有方法默认都是公共抽象(public absrtact)方法
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
抽象类和接口的一些小问题

接口可以多继承
接口实现(一个类可以实现多个接口),用逗号分隔
抽象类和接口的一些小问题

一个接口不能实现另一个接口,但可以继承多个其他接口
一个类必须实现接口抽象方法(implements),除非这个类也是抽象类

接口和抽象类的关系与区别

1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个 interface。
2.在 abstract class 中可以有自己的数据成员,也可以有非 abstarct 的成员方法,而在 interface 中,只能够有静态的不能被修改的数据成员(也就是必须是 static final 的,不过在 interface 中一般不定义数据成员),所有的成员方法都是 abstract 的。
3.abstract class 和 interface 所反映出的设计理念不同。其实 abstract class 表示的是 “is-a” 关系,interface 表示的是 “has-a” 关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是 public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的