"景先生毕设|www.jxszl.com

Java继承(extends)与组合(Composition)

2023-09-12 15:40编辑: www.jxszl.com景先生毕设

Java继承(Inheritance)与组合(Composition)

概述:继承(extends):是一种联结类与类的层次模型。指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,

并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系.
组合(Composition):体现的是整体与部分、拥有的关系。

 继承的实现方式:
    class Verhicle{ 
    } 
    class Car extends Verhicle{  
    }  

组合的实现方式:
    class Tire{ 
    }  
    class Car extends Verhicle{  
        private Tire t = new Tire();  
    }  
    
 代码举例:  
    package com.xinpaninjava.composition;
/**
 * 组合例子:车
 *
 * 通过对车中其他部件的对象引用,来实现代码的复用
 */
public class Car {
  public Engine engine = new Engine();
  public Wheel[] wheel = new Wheel[4];
  public Door left = new Door(), right = new Door(); // 2-door
  public Car() {
    for (int i = 0; i < 4; i++)
      wheel[i] = new Wheel();
  }
  public static void main(String[] args) {
    Car car = new Car();
    car.left.window.rollup();
    car.wheel[0].inflate(72);
    }
}
/**
 * 组合例子:引擎
 */
class Engine {
    public void start() {
    }
    public void rev() {
    }
    public void stop() {
    }
}
/**
 * 组合例子:轮胎
 */
class Wheel {
    public void inflate(int psi) {
    }
}
/**
 * 组合例子:窗户
 */
class Window {
    public void rollup() {
    }
    public void rolldown() {
    }
}
/**
 * 组合例子:车门
 */
class Door {
    public Window window = new Window();
    public void open() {
    }
    public void close() {
    }
}

分析:如选择继承,就需要取得一个现成的类,并制作它的一个特殊版本。通常,这意味着我们准备使用一个常规
用途的类,并根据特定的需求对其进行定制。只需稍加想象,就知道自己不能用一个车辆对象来合成一辆汽
车——汽车并不“包含(has-it)”车辆;相反,它“属于(is-a)”车辆的一种类别。“属于(is-a)”关系是用继承来表达的,而
“包含(has-it)”关系是用合成来表达的

总结:
    如果存在一个“是”的关系,并且一个类要对另一个类公开所有的接口,那么继承是更好的选择
    如果存在一个“有”的关系,那么首选组合。
JAVA/264.html">http://www.itemperor.com/a/JAVA/264.html
原文链接:http://www.jxszl.com/biancheng/JAVA/446616.html