Java继承本质

继承

继承
当多个类存在相同的属性(变量)和方法时,从这些类中抽象出父类,在父类中定义这些相同的属性和方法,子类不需要重新定义

public class Animal{
	public static void main(String[]args){
		Cat2 cat2 = new Cat2();//创建一个Cat2对象
		System.out.println(cat2.hobby);
	}
}
class Cat1{//父类
	String name = "大花猫";
	String hobby = "鱼" ;
}
class Cat2 extends Cat1{//子类
	String name = "小花猫";
}

输出的结果是鱼
这个创建的是小花猫的对象,当在小花猫的类中没有找到想要的属性时,就会向上一级(父类:大花猫)寻找,找到了就返回

上述代码的执行流程:
1.系统在方法区中加载小花猫和大花猫的类信息
2.程序执行到Cat2 cat2 = new Cat2(); 创建一个cat2 的对象引用指向Cat2,此时堆中的Cat2对象已经有了子类和父类的属性和方法
3.程序执行System.out.println(cat2.hobby); 调用Cat2类的hobby属性,此时Cat2类中没有hobby 属性,java向父类寻找bobby属性,此时父类的hobby属性的值为3
4.找到之后,子类不需要重新定义,直接调用
5.输出

注意❗️❗️❗️
1.在对象空间中,当父类或其它类的一个属性或方法被私有化,在jvm堆中,仍然存在这些私有化的属性和方法,只是不能被调用

2.当我们的父类的属性hobby被私有化了,父类的父类hobby是公共的,Java在查询时,是不会跳过父类私有化的属性去找父类的父类公开的hobby属性,而是直接报错,不会在进行下去

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云来喜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值