抽象类和接口:

抽象类:普通类就是一个完善的功能类,可以直接产生对象并且可以使用,里面的方法都是带有方法体的,而抽象类之中最大的特点是包含了抽象方法,而抽象方法是只声明而未实现(没有方法体)的方法,而抽象方法定义的时候要使用abstract关键字完成,而抽象方法一定要在抽象类之中,抽象类要使用abstract关键字声明。
抽象类的使用原则
•抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;
•子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法;
•抽象类对象可以使用对象的向上转型方式,通过子类来进行实例化操作。
•抽象类能否使用final定义?
不能,因为抽象类必须有子类,final定义的类太监类,不能有子类;
•抽象类之中能否包含构造方法?
可以,因为抽象类之中除了包含抽象方法之外,还包含了普通方法和属性,而属性一定要在构造方法执行完毕之后才可以进行初始化操作;
•抽象类之中能否不包含抽象方法?
可以,抽象类之中可以没有抽象方法,但是反过来讲,如果有抽象方法,则一定是抽象类,即使抽象类之中没有抽象方法,也不能够被直接实例化;
•抽象类能否使用static声明?
如果定义的是外部抽象类,则不能够使用static声明,可是如果定义的是内部抽象类,那么这个内部的抽象类使用了static声明之后,就表示是一个外部的抽象类。
接口:属于一种特殊的类,如果一个类定义的时候全部由抽象方法和全局常量所组成的话,那么这种类就称为接口,但是接口是使用interface关键字进行定义的。
接口的使用原则如下
•每一个接口必须定义子类,子类使用implements关键字实现接口;
•接口的子类(如果不是抽象类)则必须覆写接口之中所定义的全部抽象方法;
•利用接口的子类,采用对象的向上转型方式,进行接口对象的实例化操作。
一个子类可以同时实现多个接口,但是只能继承一个父类。
如果一个类现在即要实现接口又要继承抽象类的话,则应该采用先继承后实现的方式完成。
接口之中的访问权限只有一种:public,即:定义接口方法的时候就算没有写上public,那么最终也是public。
完整定义:
interface A { // 定义接口
public static final String INFO = “Hello World .” ;
public abstract void print() ;
}
简化定义:
interface A { // 定义接口
public String INFO = “Hello World .” ;
public void print() ;
}
接口有三大主要功能
•制订操作标准;
•表示一种能力;
•将服务器端的远程方法视图暴露给客户端。
接口的应用
(1)、接口的实际作用——工厂设计模式
(2)、接口的实际作用——代理设计模式
抽象类和接口的区别
1 定义关键字:abstract class /interface
2 组成:常量、变量、抽象方法、普通方法、构造方法/全局常量、抽象方法
3 权限:可以使用各种权限 /只能是public
4 关系:一个抽象类可以实现多个接口/接口不能够继承抽象类,却可以继承多接口
5 使用:子类使用extends继承抽象类/子类使用implements实现接口
6 设计模式:模板设计模式/工厂设计模式、代理设计模式
7 局限:一个子类只能够继承一个抽象类/一个子类可以实现多个接口
相同点:抽象类和接口的对象都是利用对象多态性的向上转型,进行接口或抽象类的实例化操作。

你可能感兴趣的:(接口,抽象类,代理模式)