一、定义规则上的区别
1、抽象类的定义规则:
①、抽象类中包含的有变量、普通方法、抽象方法、构造方法、常量
②、包含一个抽象方法的类必须是抽象类
③、抽象类和抽象方法都必须要使用abstract关键字申明
④、抽象方法只需要申明不需要实现
⑤、抽象类必须被子类继承,子类必须所继承类的全部抽象方法
2、接口的定义规则:
①、接口中包含全局变量和抽象方法
②、接口的定义必须用interface,方法必须使用abstract申明
③、在接口中如果不写方法的权限是public,则它默认的权限也是public而不是default
二、抽象类与接口的关系
①、抽象类可以实现多个接口
①、抽象类有单继承的局限
四、抽象类与接口的实际应用
①、抽象类一般用于模板设计
②、接口一般用于工厂设计和代理设计
③两者联合使用---适配器设计
适配器设计:
①、抽象类可以实现多个接口
abstract class AbstractTest implements InterfaceTest {
abstract int test1();
}
②、接口不能继承抽象类,但允许继承多个接口
public interface InterfaceTest2 extends InterfaceTest, InterfaceTest1{
}
三、抽象类与接口的局限
①、抽象类有单继承的局限
四、抽象类与接口的实际应用
①、抽象类一般用于模板设计
②、接口一般用于工厂设计和代理设计
③两者联合使用---适配器设计
适配器设计:
public interface Window {
public void open();
public void close();
public void activate();
}
abstract class WindowAdapter implements Window{
public void open(){};
public void close(){};
public void activate(){};
}
public class Windowlmpl extends WindowAdapter {
public void close(){
System.out.println("关闭窗口");
}
public void open(){
System.out.println("打开窗口");
}
}