Java类、对象和实例的理解

本文探讨了面向对象编程中对象与实例的区别,并通过Java代码示例解析了它们之间的关系,尤其是在涉及多态的情况下。

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

  最近在看Python,这门面向对象的语言又引起了类的引用、对象和实例这些概念之间的纠结,我按照自己的理解总结了一下Java里三者的关系,如果有不对的地方还希望大家指出。
  类的引用和对象的概念没什么好弄混的,但是对象和实例之间的区别让人疑惑,在《Thinking in Java》一书里提到:“每个对象都是某个类(class)的一个实例,这里类就是类型的意思”。很多地方提到对象和实例就是一个东西,在我理解看来,这种说法不准确,更准确的理解是实例表示的是对象和类的关系
  很多地方都拿这个例子做比方:

Person person = new Person();

这里new Person()新建了一个Person对象,而person则是一个指向Person对象的引用,这个Person对象就是Person类的一个实例,于是认为实例和对象是一样的概念,在这里,这样的理解是没有问题的,但是如果出现了多态呢?就像下面的代码所示:

//Child extends Person
Person person = new Child();

按照《Thinking in Java》里的说法,new Child()新建了一个Child对象,person是指向这个Child对象的引用,而这个Child对象应该是Person类的一个实例。这样的话,实例就展示了对象和类之间的关系。
  在我看来,实例是对象实例化后的结果,new Child()这个实例化过程显然并没有将Child类的所有函数实例化,因为person是无法调用Child类独有的方法的,所以只是部分实例化,这也表现了实例和对象之间的区别。再举个例子:动物下有狗这种子类,狗有一个对象叫做小汪,小汪也是动物的一个实例,关键是你怎么给小汪划分类型了。
  其实学语言没必要纠结这些名词之间的差异的,有些名词的迷惑都是翻译的锅,但是有时候有些地方的描述让人不得不理一下名词之间的区别,这里只是个人看法,大家觉得这样理解没问题就这样理解吧。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值