抽象类:
1,一个抽象方法,必须放在抽象类中;
2,但一个抽象类中,可以没有抽象方法(其实很少见)。
3,一个下级类继承了上级抽象类,则:
3.1 要么这个下级类实现上级类中的所有抽象方法;
3.2要么这个下级类也是抽象类——其实此时可以去实现其中的“部分”(0%~100%)抽象方法
4,下级类实现上级类中的抽象方法的时候,需要满足:
4.1 访问修饰符的范围不能更小;
4.2 方法的形参要跟上级类中的对象抽象方法的形参一致。(其实,这里本身就是“继承”并“重写”而已)
接口:1,接口之间也可以有继承关系
interface 接口2 extends 接口1{ ..... }
2,接口可以进行“多继承”;
3,类实现接口,可以进行“多实现”——其实本质是继承
class C implements 接口1,接口2{ .... }
4,一个类实现一个接口,则:
4.1,要么实现该接口中的所有抽象方法;
4.2,要么自己本身就是抽象类;
它们的主要区别:
1、抽象类是一种不能被实例化的类, 只能作为其他类的父类来使用。 抽象类是通过关键字abstract 来声明的。
2、抽象类与普通类相似,都包含成员变量和成员方法,两者的区别在于,抽象类中至少要包含一个抽象方法,抽象方法的格式为:abstract function abstractMethod();
3、抽象方法没有方法体,该方法天生就是要被子类重写的。
4、接口是通过 interface 关键字来声明的, 接口中的成员常量和方法都是 public 的, 方法可以不写关键字 public。
5、接口中的方法也是没有方法体。接口中的方法也天生就是要被子类实现的。
6、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计 一个上层,通常设计为接口。子类继承抽象类使用 extends,子类实现接口使用 implements。