抽象类不能实例化,而且必须被子类继承,子类需要实现所有的方法。
接口是一个特殊的类,由抽象方法和全局常量组成(public static final)
适配器设计模式
interface Window{ public void open() ; // 打开窗口 public void close() ; // 关闭窗口 public void icon() ; // 最小化 public void unicon() ; // 最大化 } abstract class WindowAdapter implements Window{ public void open(){} public void close(){} public void icon(){} public void unicon(){} }; class MyWindow extends WindowAdapter{ public void open(){ System.out.println("打开窗口!") ; } }; public class AdpaterDemo{ public static void main(String args[]){ Window win = new MyWindow() ; win.open() ; } } |
工厂设计模式:
interface Fruit{ public void eat() ; } class Apple implements Fruit{ public void eat(){ System.out.println("吃苹果。。。") ; } }; class Orange implements Fruit{ public void eat(){ System.out.println("吃橘子。。。") ; } }; class Factory{ // 工厂类 public static Fruit getFruit(String className){ Fruit f = null ; if("apple".equals(className)){ f = new Apple() ; } if("orange".equals(className)){ f = new Orange() ; } return f ; } }; public class InterDemo{ public static void main(String args[]){ Fruit f = Factory.getFruit(args[0]) ; if(f!=null){ f.eat() ; } } } |
代理设计模式:
interface Window{ public void open() ; // 打开窗口 public void close() ; // 关闭窗口 public void icon() ; // 最小化 public void unicon() ; // 最大化 } abstract class WindowAdapter implements Window{ public void open(){} public void close(){} public void icon(){} public void unicon(){} }; class MyWindow extends WindowAdapter{ public void open(){ System.out.println("打开窗口!") ; } }; public class AdpaterDemo{ public static void main(String args[]){ Window win = new MyWindow() ; win.open() ; } } |
抽象类与接口的比较:(重点)
比较点 | 抽象类 | 接口 |
组成 | 抽象方法、普通方法、常量、变量、构造器、全局变量 | 抽象方法、全局常量 |
限制 | 只能继承一个抽象类 | 一个子类可以实现多个接口 |
关系 | 一个抽象类中可以包含多个接口 | 一个接口中可以包含多个抽象类 |
实例化 | 都是通过对象的多态性,通过子类进行对象的实例化操作 | |
实现限制 | 只能单继承 | 可以实现多个 |
特征 | - | 表示一个标准、一种能力 |