java继承和组合

java继承

  • 因为现实世界有很多的继承关系,所以把现实世界的事或物转换到计算机中,就需要java的继承,同时增加类和类之间的关系,此关系很单一,就是继承关系
  • 实现继承就是为了代码的重用,继承充分展现了代码的可复用性
  • 继承必须以封装为基础

java继承的特点

  • 所有的非object类都有父类,如果没有写extends关键字,实际上默认继承了object类
  • java的根类就是object类
  • 继承是通过extends关键字来实现的,extends后的父类只有一个,所以java是单继承
  • 有了java的继承,好处就是代码重用;坏处就是类和类之间的关系复杂了.

继承中的几个容易混淆的概念

  • 子类能够继承长辈的非私有的东西(属性和方法)
  • 子类不是拥有长辈的东西,只是子类对向北的东西具有访问性
  • 本类里的东西,就是本类自己的

使用继承要注意的问题

有了继承之后,同样要考虑数据的存储问题,对象的数据该如何存取在子类中利用继承的可访问性调用长辈的方法,用长辈自己的方法操作长辈类自己对象中的私有属性.

super关键字

  1. super(参数列表)
    参数列表,是可以为0个或多个的
    调用父类构造,且super(参数列表)只能写在子类构造的第一条语句
    super()调用的是父类的午餐构造,如果不写,系统会自动给添上
  2. super.
    用来调用父类的方法或属性
    前提是父类允许子类调用(即父类对子类开放访问性)

结论

做继承是为了复用长辈中的内容(属性和方法)
即,在子类中使用长辈中的内容(属性和方法)
所以继承的优点:可以使用长辈中的内容
		 缺点:1.增加了类和类之间的复杂关系
		 	  2.如果继承的层次越多
		 	 	 子类中可访问的内容就越多
		 	 	 但子类并不都需要

组合

组合的方式有两种

  1. 方式一 : 在类中放置属性/组合属性
public class xx{
	//组合另一个Test类中的对象
	private Test test;
	public void method(){
		//在此方法中可以使用或操作test对象中的属性
	}
}
  1. 方式二 : 在类的方法中组合数据
public class yy{
	public void method(Test test){
		//在此方法中使用或操作test对象中的数据
	}
}

多用继承少用组合

  • 什么时候用继承

    • 继承的层次不是很多的时候
    • 要使用多态的时候就必须是以继承作为前提的
  • 什么时候使用组合

    • 想要获取别的类中的方法和属性的时候可以用组合
  • 现用现组合

注意

组合是has a的关系 (has a有一个)
如:
方式一 : xx类中有一个test对象
方式二 : yy类中的method方法中有一个test对象

继承是is a的关系(is a是一个)
如:
Student is a CommonPerson学生是一个普通人

public class Student extends CommonPerson

Teacher is a CommonPerson老师是一个普通人

public  class Teacher extends CommonPerson

想要用别的类中的数据

  1. 用继承
  2. 用组合
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java继承组合是两种实现代码复用的方式。继承是指一个类可以继承另一个类的属性和方法,从而实现代码的重用。组合则是指一个类包含另一个类的对象作为其属性,从而实现代码的重用。 在图形类的设计,可以使用继承组合来实现图标的功能。首先,可以定义一个基础的图形类,包含常见的属性和方法,如形状、颜色、大小等。然后,可以使用继承来定义不同类型的图形类,如圆形、矩形、三角形等,这些子类会继承基础图形类的属性和方法,同时可以根据具体需求进行扩展和重写。 而在实现图标功能时,可以使用组合组合不同类型的图形类。可以定义一个图标类,包含一个图形类的对象作为其属性。图标类可以具有自己的属性和方法,如位置、旋转角度、比例等。通过组合,可以将不同类型的图形组合在一起,形成一个复杂的图标。同时,也可以通过修改图形类的对象来改变图标的形状、颜色等属性。 继承组合都是实现代码复用的重要方式,但在具体使用时需要考虑到实际需求和设计的灵活性。继承能够实现代码的重用,但会增加类的耦合性;组合能够实现更灵活的组合和功能扩展,但需要更多的代码来实现。因此,在具体的图标设计,可以根据具体需求和设计规范选择合适的方式来实现图标的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值