java的继承和组合何如选择
来源:互联网 发布:kido手表软件 编辑:程序博客网 时间:2024/04/28 05:55
继承的条件是:子类中有增加成员的属性,或修改了父类的方法,或有自己的方法。
组合的条件是:处于类复用的目的
下面先来看一个继承的demo
class Animal
{
private void beat()
{
System.out.println("心脏跳动");
}
public void breath()
{
System.out.println("吸一口气,吐一口气,呼吸中...");
}
}
//继承Animal,直接复用父类的breath方法
class Bird extends Animal
{
public void fly()
{
System.out.println("我在天空自在的飞翔...");
}
}
//继承Animal,直接复用父类的breath方法
class Wolf extends Animal
{
public void run()
{
System.out.println("我在陆地上快速奔跑...");
}
}
public class InheritTest
{
public static void main(String[] args)
{
Bird b = new Bird();
b.breath();
b.fly();
Wolf w = new Wolf();
w.breath();
w.run();
}
}
**********************************************************************************************************************************
然后是 组合 的 demo
class Animal
{
private void beat()
{
System.out.println("心脏跳动");
}
public void breath()
{
this.beat();
System.out.println("吸一口气,吐一口气,呼吸中...");
}
}
class Bird
{
//将原来的父类嵌入原来的子类,作为子类的一个组合成分
private Animal a;
public Bird(Animal a)//这里其实一个构造器 创建对象之前 将创建好的Animal对象传入 然后将Animal对象的引用付给了当前对象
{
this.a = a;
}
//重新定义一个breath方法
public void breath()
{
//直接复用Animal提供的breath方法来实现Bird的breath方法
a.breath();
}
public void fly()
{
System.out.println("我在天空自由自在的飞翔");
}
}
class Wolf
{
//将原来的父类嵌入原来的子类,作为子类的一个组合成分
private Animal a;
public Wolf(Animal a)//这里其实一个构造器 创建对象之前 将创建好的Animal对象传入 然后将Animal对象的引用付给了当前对象
{
this.a = a;
}
//重新定义一个自己的breath方法
public void breath()
{
//直接复用Animal提供的breath方法来实现Wolf的breath方法
a.breath();
}
public void run()
{
System.out.println("我在陆地上快速奔跑");
}
}
public class CompositeTest
{
public static void main(String[] args)
{
//此时需要显式创建被嵌入的对象
Animal a1 = new Animal();
Bird b = new Bird(a1);
b.breath();
b.fly();
//此时需要显式创建被嵌入的对象
Animal a2 = new Animal();
Wolf w = new Wolf(a2);
w.breath();
w.run();
}
}
组合是把旧类对象作为新类的Field嵌入,用以实现新类的功能,用户看到的是新类的方法,而不能看到被嵌入对象的方法。因此,通常需要在新类里使用private修饰被嵌入的旧类对象。
总之,继承要表达的是一种“是 is-a”的关系,而组合表达的是“有has-a”的关系
- java的继承和组合何如选择
- 组合和继承的选择
- java中组合和继承的选择使用
- Java组合与继承之间的选择
- java的组合和继承
- java的组合和继承
- java的继承和组合
- 继承与组合的选择
- java 组合和继承
- java继承和组合
- Java - 组合和继承
- java继承和组合
- java中选择组合或继承的依据
- JAVA中有关组合与继承之间选择的问题
- [7]复用类(继承和组合的选择)0X03
- Java继承和组合的区别
- java继承和组合的讨论
- java继承和组合的优缺点
- 一道前端面试题:躲猫猫
- GCD(四)dispatch_group
- 手机客户端控制互联网电视
- wind7修改mysql数据库的密码
- Android Service组件在新进程中的启动过程
- java的继承和组合何如选择
- UVA 12712 Pattern Locker(简单排列组合数学题)
- linux 安装java
- 谈谈菜鸟的自我修养
- C++动态数组分配与释放
- 在iOS中集成ZXing实现二维码扫描
- Oracle RAC cache fusion原理测试
- 带温度补偿超声波测距(AT89S51)
- 【甘道夫】一键启动集群,包括HDFS HA + YARN相关所有程序