JavaSE基础(51) 组合

组合:希望一个类A有另一个类B的功能

1.让类A继承B      不建议这么做。原因:

                             ①不符合面向对象的思想(继承是典型的is a关系,A(人)是B(鸟)不合理) 
                             ②java是单继承(A继承了B之后就不能继承其他的类了,不灵活)
2.使用组合:把一个类型的对象作为字段声明在另一个类中

      class A{

               B b;

               public void fly(){

                       b.fly();

               }

      }

ex:

class Test{
	public static void main(String[] arg){
		B b = new B();
		A a = new A(b);
		a.fly();  //我会飞...
	}
}
class B{
	public void fly(){
		System.out.println("我会飞...");
	}
}
class A {
	B b;//把B类型的对象作为字段声明在A类中,就形成了组合关系。 可以理解为A有飞的能力。 是 has-a 关系
	public A(B b){//使用构造方法给B赋值。不是必须的
		this.b = b;
	}
	public void run(){
		System.out.println("我会跑...");
	}
	public void fly(){//A本身有fly功能
		b.fly();//方法的实现是调用B的fly功能
	}
}

运行结果图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值