Java编程:组合、继承和代理的区别

企鹅博客
18926
文章
0
评论
2020年1月9日19:55:46 评论 6 views 817字阅读2分43秒

组合、继承和代理三者的定义:

  1. 组合:在新类中new 另外一个类的对象,以添加该对象的特性。
  2. 继承:从基类继承得到子类,获得基类的特性。
  3. 代理:在代理类中创建某功能的类,调用类的一些方法以获得该类的部分特性。
  1. 使用场合:
  • 组合:各部件之间没什么关系,只需要组合即可。like组装电脑,需要new CPU(),new RAM(),new Disk()……

  演示代码如下:

 public class Computer {
    public Computer() {
        CPU cpu=new CPU();
        RAM ram=new RAM();
        Disk disk=new Disk();
    }
}
class CPU{    }
class RAM{    }
class Disk{    }

继承:子类需要具有父类的功能,各子类之间有所差异。like Shape类作为基类,子类有RectangleCirCleTriangle……代码不写了,大家都经常用。

  • 代理:飞机控制类,我不想暴露太多飞机控制的功能,只需部分前进左右转的控制(而不需要暴露发射导弹功能)。通过在代理类中new一个飞机控制对象,然后在方法中添加飞机控制类的各个需要暴露的功能。

  演示代码如下:

 

public class PlaneDelegation{   
    private PlaneControl planeControl;    //private外部不可访问
    /*
    * 飞行员权限代理类,普通飞行员不可以开火
    */
    PlaneDelegation(){
        planeControl=new PlaneControl();
    }
    public void speed(){
        planeControl.speed();
    }
    public void left(){
        planeControl.left();
    }
    public void right(){
        planeControl.right();
    }
}

继续阅读
  • 版权声明: 发表于 2020年1月9日19:55:46
  • 转载注明:https://www.qieseo.com/181674.html
二叉树的Java实现及特点总结 Linux编程

二叉树的Java实现及特点总结

二叉树是一种非常重要的数据结构,它同时具有数组和链表各自的特点:它可以像数组一样快速查找,也可以像链表一样快速添加。但是他也有自己的缺点:删除操作复杂。 我们先介绍一些关于二叉树的概念名词。 二叉树...
C++中的显式类型转换操作符 Linux编程

C++中的显式类型转换操作符

即使类型转换本身是危险的,在有些时候类型转换也是不可或缺的。程序员不使用显式转换,编译器也可能会使用隐式转换,那还不如把代码控制在程序员自己手中。 C++有4种显式类型转换操作符,最好不要使用C语言编...
Linux文件编程学习 Linux编程

Linux文件编程学习

在Linux平台下对文件编程可以使用两类函数:(1)Linux操作系统文件API;(2)C语言I/O库函数。 前者依赖于Linux系统调用,后者实际上与操作系统是独立的,因为在任何操作系统下,使用C语...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: