一、继承和组合的区别
共同点:都可以实现代码的复用
不同点:
is-a关系:表示是关系使用继承、如鸟是一种动物。
has-a关系:表示拥有关系应该使用组合、如鸟类拥有翅膀。
二、演示示例
package edu.aeon.test; /** * [说明]:测试组合 * @author aeon * */ public class Animal { String eye; public void run() { System.out.println("跑跑!"); } public void eat() { System.out.println("吃吃!"); } public void sleep() { System.out.println("zzzzz"); } public Animal() { super(); System.out.println("创建一个动物!"); } public static void main(String[] args) { Bird2 b = new Bird2(); b.run(); b.animal.eat(); } } class Mammal { Animal animal2 = new Animal(); public void taisheng() { System.out.println("我是胎生"); } } class Bird2 { Animal animal = new Animal(); public void run() { animal.run(); System.out.println("我是一个小小小小鸟,飞呀飞不高"); } public void eggSheng() { System.out.println("卵生"); } public Bird2() { super(); System.out.println("建一个鸟对象"); } }
结果截图: