java面向对象程序设计(三)

抽象类的应用

   设计模板

接口的应用

   定制标准
设计模式

interface USB
{
    public void start();
    public void stop();
}

class Computer
{
    public static void plugin(USB usb)
    {
        usb.start();
        System.out.println("========= USB设备=========");
        usb.stop();
    }
};
class Flash implements USB
{
    public void start()
    {
        System.out.println("U 盘开始工作");
    }
    public void stop()
    {
        System.out.println("U盘停止工作");
    }
};
class Print implements USB
{
    public void start()
    {
        System.out.println("printer start to work.");
    }
    public void stop()
    {
        System.out.println("printer stop to work.");
    }
};
public class Main {
    public static void main(String[] args) {

              Computer.plugin(new Flash());
             Computer.plugin(new Print());
     }
}
输出结果:
      U 盘开始工作
      ========= USB设备=========
     U盘停止工作
     printer start to work.
     ========= USB设备=========
     printer stop to work.
 

 

    工厂设计模式

    代理设计模式
       由代理主题操作真实主题,真实主题执行具体的业务操作,代理主题负责相同的业务处理
       interface Network
{
    public void browse();
};
class Real implements Network
{
    public void browse(){
        System.out.println("上网浏览信息");
    }
};
class Proxy implements Network
{
    private Network network;
    public Proxy(Network network){
        this.network = network;
    }
    public void check(){
        System.out.println("检查用户是否合法");
    }
    public void browse(){
        this.check();
        this.network.browse();
    }
};
public class Main {
    public static void main(String[] args) {

   适配器设计模式

            在接口和实现接口的类中间再定义用来过渡的抽象类(常称为适配器类),在这抽象类中实现若干方法(方法体为空),实现接口的类再继承此抽象类,可以有选择地重写所需要的方法,而不必实现所有方法。
         interface Window//定义window接口
{
    public void open();
    public void close();
    public void activated();
    public void iconified();
    public void deiconified();
};
//定义抽象类(适配器类)实现接口,在此类中重写方法,但所有方法为空
abstract class WindowAdapter implements Window
{
    public void activated(){}   //重写activated()方法,方法体为空
    public void close(){}
    public void deiconified(){}
    public void iconified(){}
    public void open(){}
};
//定义通过继承适配器类实现接口的子类
class WindowImpl extends WindowAdapter
{
    public void open()
    {
        System.out.println("窗口打开.");
    }
    public void close()
    {
        System.out.println("窗口关闭");
    }
};

public class Main {
    public static void main(String[] args) {

             Window win = new WindowImpl();//实现接口对象
             win.open();
             win.close();   }
}
输出结果:
       窗口打开.
       窗口关闭

 

抽象类和接口的区别

序号

区别点

抽象类

接口

1

定义

包含至少一个抽象方法

抽象方法和全局常量的集合

2

组成

构造方法、抽象方法、普通方法、常量、变量

常量、抽象方法

3

使用

子类继承抽象类(extends)

子类实现接口(implements)

4

关系

抽象类可以实现多个接口

接口不能继承抽象类,但可以继承多个接口

5

常见设计模式

模板设计

工厂设计、代理设计

6

对象

都通过对象的多态性产生实例化对象

7

局限性

抽象类只可以单继承

接口可以单继承也可多继承

8

实际

作为一个模板

作为一个标准

9

选择

如果抽象类和接口都可以使用,则优先使用接口,避免单继承的局限

10

特殊

一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类

 interface IA
{
    public abstract void printA();//定义抽象方法
    //定义内部抽象类
    abstract class IB{
        public abstract void printB();
    };
};
class IX implements IA
{
    public void printA()//实现接口的抽象方法
    {
        System.out.println("Hello-->A");
    }
    //在实现接口(A)的类(X)中定义内部类(Y),这个内部类(Y)继承接口(A)中的内部抽象类(B)
    class IY extends IB
    {
        public void printB()
        {
            System.out.println("Hello-->B");
        }
    };
};
public class Main {
    public static void main(String[] args) {
        //接口中包含抽象类
        IA.IB b = new IX().new IY();
        b.printB();
    }
}
输出结果:Hello-->B

              Network net = null;
              net = new Proxy(new Real());
              net.browse();   
   }
}
           输出结果:
              检查用户是否合法
              上网浏览信息


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值