面向对象08
接口
-
是一种数据类型(引用类型)
-
由interface定义
public interface Test {//interface默认public }
-
只能包含常量和抽象方法----数据默认都是常量,方法默认都是抽象
interface Test { //int a ;变量默认为常量,常量必须在声明同时初始化 //实际上加了final的量都必须声明同时初始化 int A = 1;//相当于public static final int A=1; //void show(){} 默认抽象方法,抽象方法不能有方法体 void show();//相当于public abstract void (); }
-
接口不能被实例化(abstract抽象类)即new对象
-
接口需要被实现(继承),实现类/派生类:必须重写所有抽象方法
public class Demo01 implements Test01{
public static void main(String[] args) {
}
//void show(){} 继承接口必须要重写方法,重写方法时,访问权限必须大于等于被重写的方法,异常则必须小于等于
public void show(){
}
}
-
一个类可以实现多个接口,以逗号分隔,若又继承又实现,先继承后实现
public class Demo01 extends StringDemo implements Test02,Test{}
-
接口可以继承接口(继承具有传递性,实现某个接口意味着也要实现这个接口所继承的接口的所有抽象方法)
public class Demo01 extends StringDemo implements Test02{ public static void main(String[] args) { //Test test = new Test(); 不能实例化 Test02 test02 = new Demo01();//向上造型 Test test = new Demo01();//继承的传递性,向上造型 }
- 抽象类有构造方法,接口没有
补充:
-
关系:
- 类和类:继承extends
- 接口和接口:继承extends,可以多继承。
- 接口和类:实现implements
-
可以向上造型为:继承的父类和所实现的所有接口(继承的传递性)
-
设计规则
-
将所有派生类共有的属性和行为抽到父类中(抽共性)
-
若派生类的方法具体实现不一样则在父类中将其设计为抽象方法
若派生类的方法具体实现一样则在父类中将其设计为普通方法
-
将部分派生类共有的属性和行为,抽到接口中
接口是对继承的单根性的扩展-------------------------------实现多继承
接口相当于制定了一个标准、规范
实现了接口,那就能干某件事,若不实现接口,就干不了那个事(通过向上造型为接口抽出实现了接口的具有共性的对象进行操作)
设计上,抽象类是对类的抽象,接口更注重对行为的抽象。
-