如何理解 Java 中的继承

本文探讨了Java中子类实例化时父类的状态,解释了父类成员变量的实例化时机,以及不同访问修饰符对变量的影响。通过具体示例,澄清了常见误解,并深入分析了继承机制的本质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提问:在java中,用子类 new 出一个对象,那么父类是否也会被实例化?

1、当我们用 子类 去实例化一个对象时,父类会被实例化么?

答案是:父类不会实例化。

2、既然父类不会实例化,那么写在父类的 public 成员变量 、private 成员 怎么办?

例如:有一个成员变量,定义在父类中。这个list的成员变量在什么时候实例化?
public ArrayList list =new ArrayList<>();
我们知道,java中,一切皆对象。如果没有对象,就会抛出 空指针 。然而这个变量是定义在父类中的,
实例化的是子类,父类没有实例化啊。那么我子类去使用父类定义的对象时,会不会抛出空指针??

3、假如把public 改为 private 呢?

  private ArrayList<String> list =new ArrayList<>();

我们都知道private 修饰的是私有属性,子类也是无法访问的。那么子类的实例里面,到底有没有给 list 这个成员创建对象呢?

继承只是代码上的为了减少代码的重复,减少无谓的代码逻辑。继承,相当于是复制父类的代码过来的。这样子类就具有父类的功能了,但是为了简化代码。
用子类去创建一个对象,虽然看起来,写在父类的成员变量不在子类中,但是,其实子类也实例化了该成员变量的。例如:
User user1=new User();
User user2=new User();
我们可以使用java中的== 等号 ,来判断这两个对象是同一个对象。
另外需注意一点:java 中的 String =“anmemem” 这种格式的字符串,它是放在常量池的。
只有 String string=new String ("") 这种方式才是生成一个新的实例。

访问修饰符——描述的是:类与类之间 的访问控制。运行时候,就是对象和对象之间的访问控制。

static 和 非static ——描述的是:变量是 类变量,还是实例变量。

如何理解: 子类实例化时,父类会先被加载?

结论:

继承只是一种语法!是为了减少重复代码而设计的。它的唯一目的就是减少重复代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值