java**类**:有正常的方法等,可以直接调用。
抽象类:无法直接使用,需要被子类继承后才能使用,一个java类只能继承一个抽象类。抽象类中的抽象方法必须定义为protected或者public,因为如果我们将其定义为私有的话,就无法被子类继承(其实也不是不好继承,而是不好调用)
[public] abstract class MyClass{
abstract int fun();
}
抽象类中的抽象方法没有具体实现的方法
接口:无法直接使用,需被java类实现后才能使用,一个java类可以实现多个接口。
接口中可以有变量和方法,但是接口中的变量是被强制置为public static final 的,并且只能为该类型。
[public] interface InterfaceName {
}//这是一个空的接口
一个类只能继承一个抽象类,但是一个类可以实现多个接口
继承与实现的区别:
extends,表示对父类的继承,可以实现父类,也可以调用父类初始化 this.parent()。而且会覆盖父类定义的变量或者函数。
implements,表示对接口的实现,接口通过关键字interface 进行定义。eg:public class S implements F,在接口F中对方法进行声明,在类S中对该方法进行实现。
这两种实现的具体使用,是要看项目的实际情况,需要实现,不可以修改implements,只定义接口。需要具体实现,或者可以被修改扩展性好,用extends。