修饰符abstract:抽象的,定义框架不去实现,可以修饰类和方法
abstract修饰类:
会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型
抽象类就相当于一个类的半成品,需要子类继承并覆盖其中的抽象方法,这时子类才又创建实例的能力,如果子类没有实现父类的抽象方法,那么子类也要为抽象类。
abstract修饰方法:
会使这个方法变成抽象方法,也就是只有声明而没有实现,实现部分以";"代替,需要子类继承实现。
抽象方法代表了某种标准,定义标准,定义功能,在子类中去实现功能(子类继承了父类并需要给出从父类继承的抽象方法的实现)。
方法一时间想不到怎么被实现,或有意要子类去实现而定义某种标准,这个方法可以被定义为抽象。
注意:
有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。
接口(interface):
接口的定义:接口从本质上说是一种特殊的抽象类。
关键字interface。
在接口中,所有的方法为公开、抽象的方法:public abstract
在接口中,所有的属性都是公开、静态的常量:public static final
接口与接口之间可以多继承,用extends,多个之间用逗号隔开。
接口中没有构造方法,不能用“new 接口名”来实例化一个接口,但可以声明一个接口。
接口的实现:
关键字implements
一个类实现一个接口必须实现接口中所有的方法,否则其为抽象类,并且在实现类中的方法要加上public(不能省略)。
类中的默认修饰符:default。
接口中的默认修饰符:public。
一个类除了继承另一个类外(只能继承一个类),还可以实现多个接口(接口之间用逗号分隔)。
接口的作用:
间接实现多继承:用接口来实现多继承并不会增加类关系的复杂度。因为接口不是类,与类不在一个层次上,是在类的基础上进行再次抽象。
接口可以抽象出次要类型,分出主、次关系类型,符合看世界的一般方法。
接口隔离,与封装性有关。一个对象都有多个方面,可以只展示其中几个方面,其他的都隐藏。因此可以看为“更高层次的封装”,把 一个大接口做成若干个小接口。
通过接口制定标准(最重要的作用)
接口:制定标准。
接口的调用者:使用标准。
接口的实现类:实现标准。
解耦合作用:把使用标准和实现标准分开,使得标准的制定者和实现者解除偶合关系,具有极强的可移植性
例:sun公司提供一套访问数据库的接口(标准),java程序员访问数据库时针对数据库接口编程。接口由各个数据库厂商负责实现。
接口编程的原则
尽量针对接口编程(能用接口就尽量用接口)
接口隔离原则(用若干个小接口取代一个大接口)
注意:
接口中没有构造器,也没有main方法