java基础入门菜鸟学习第十一天——Java面向对象(三)继承

Java基础知识——继承

4.1继承

4.1.1什么是继承?
  • 继承在本职上是特殊一般的关系,即常说的is-a关系,意思就是子承父业。描述类和类之间的关系的。编写类的时候,我们发现类和类之间是可以存在父子关系的。通过extends来描述这种继承关系,子类extends父类就是子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的 一些属性或方法。
4.1.2继承的语法格式

Java继承的关键字是:extends

  • Java继承的语法格式

    public class 子类名 extends 父类名{
        
    }
    

代码演示:

//父类、超类、基类
public class Animal{
	String type;
	String color;
	public Animal(){
	
	}
	public void eat(){
		System.out.println("吃东西");
	}
}
//子类
public class Dog extends Animal{//Dog继承了Animals
	String name;
	public Dog(){
        
	}
	public void shout(){
		System.out.println(this.type+","+this.color+","+this.name+"汪汪汪。。。。。");//调用了子类继承父类中的属性
	}
}
public class Test01{
	public static void main(String[] args){
		//创建dog对象
		Dog d=new Dog();
		d.name="旺财";
		d.type="土狗";
		d.color="土豪金";
		d.shout();
		d.eat();//调用了子类继承父类中的方法
	}
}

继承代码分析:虽然对于Dog类而言,不存在name、type属性以及eat方法,但是Dog的父类Animal类是存在的,也就意味着Dog继承了Animal中声明的属性以及方法。结论:在java中一旦发生继承关系之后,子类就会拥有父类中的属性以及方法,子类无需自己再去声明,达到了代码复用性的要求,简化了代码。

继承注意事项(1):

  • 在继承关系中,子类拥有父类中的成员,子类不能拥有父类中的被private修饰后的成员
  • java多层继承,在多层继承中最下层的子类拥有整个继承体系的成员,最上层的父类里面定义所有子类的共性描述
  • 在java中只支持单继承。导致复用性虽然有,但是不是特别高。针对这个问题,Java采用的策略称之为单继承、多实现。

问题1:假设在后期的业务中,存在了A->B,但是后期在扩展业务时发现:A->C可能是更好的一种方案,该如何解决?

  • j解决方法:一般情况下的解决方案是通过B去->C,以此让C成为A的间接父类,达到代码复用的目的。千万不能之间终止A和B的继承关系,因为后期中一旦切断A和B的联系可能导致代码很多地方存在不安全的隐患。

继承注意事项(2)

  • 如果继承关系链很长的情况下又会导致后期的业务拓展变得很麻烦,调用关系变得很复杂。在正常的生成环境中,一般我们都会要求继承链的长度可能不会超过3层。
  • tips:在java中一个类只有一次继承机会,如果不能完全确定最好不要用。

上述代码内存分析图

继承分析图PNG.PNG

  • 创建子类对象时,父类的空构造器被调用。子类要创建对象一定会先创建父类对象。(这是因为子类构造器方法中有默认super()方法(图形中蓝色部分),后面内容会提)
  • 在内存中,要new子类时,会先在内存中给父类开辟一个存储空间。存储父类的内容。
  • 子类调用父类中定义的属性时,子类对象中维护了和父类存储空间的关系(紫色),给父类定义的属性赋值时,能够找到对应的父类对象。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

QZP51ZX

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

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

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

打赏作者

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

抵扣说明:

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

余额充值