1.抽象类
(1)基本概念:抽象方法是指只声明而未实现的方法,所有的抽象方法必须使用abstract关键字来声明,包含抽象方法的类必须使用abstract class 声明。不能直接实例化,即不能直接用new关键字去产生对象;定义抽象方法时只需声明,而不需要实现;含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
(2)原则:抽象类必须有子类,子类使用extends继承抽象类,一个子类只能够继承一个抽象类;子类必须覆写抽象类之中的全部抽象方法;如果要实例化抽象类的对象,则可以使用子类进行对象的向上转型完成。
(3)特征:抽象类中可以有构造方法,但是这些构造方法必须在子类中被调用。在外部抽象类上无法使用static声明,但是内部抽象类却可以使用static定义,使用static定义的内部抽象类就表示一个外部类。
2.接口(interface)都是public 权限
(1)接口里的数据成员必须初始化,且数据成员均为常量,常见的是全局变量。接口里的方法为abstract。为避免在接口添加新方法后要修改所有实现类,允许定义默认方法,即default方法。
(2)使用原则:必须有子类,子类依靠implements关键字可以同时实现多个接口;
接口的子类(如果不是抽象类)则必须覆写接口之中的全部抽象方法;
接口可以利用对象多态性,利用子类实现对象的实例化。
接口是java中实现多继承的一种机制。
接口与抽象类相比较,最大的区别在于子类上,
子类可以同时实现多个接口;
一个类实现多个接口时,若接口中有默认方法,不能出现同名默认方法。
如果一个子类既要实现接口又要继承抽象类,则应该采用先继承后实现的顺序完成。
(3)作用:接口是标准,所谓的标准,指的是各方共同遵守的一个守则。
(4)工厂模式举例:
一般模式
工厂模式:
代理模式: