抽象类 定义语法: 1. abstract class 2.访问修饰符都可以 3.里面可以是任意属性 4.有构造器 5.抽象的方法必须写 abstract 6.可以有实现方法 使用语法: 1.可以被子类继承,单继承 设计思想: 把一脉相承,与生俱来的属性和方法设计在抽象类之中。 接口: 定义语法: 1. interface 2.访问修饰符只能是 public 和默认 3.里面只能是公共静态常量 4.无构造器 5.抽象方法可以不写 abstract ,系统会自动默认。 6.1.8版本以前里面无实现方法,1.8可以添加实现方法,但是必须添加default关键字 使用语法: 1. 可以被子接口继承,多继承,可以被实现类实现,多实现 2. 接口中的方法不能被static 设计思想: 把外部可以附属添加的行为设计到接口中 区别: 1. 抽象类只能是单继承,而接口可以多实现,接口可以继承多接口 2. 抽象类可以通过implements关键字实现接口,但是接口只能使用extends关键字继承接口,多继承。 3. 抽象类强调所属关系。接口强调特定功能的实现。 4. 抽象类中并不是所有方法都是抽象方法,子类继承抽象类可以选择实现也可以选择声明其是一个抽象方法而不实现(有抽象方法的类,必须是抽象类)。 5. 抽象类是接口与类的中介。 6. 抽象类的变量默认是friendly类型,其值可以在子类中重新定义,也可以重新赋值,但是接口的变量默认是 public static final,实现类中无法重新定义,不能改变其值