Java类、对象和实例的理解

  最近在看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类独有的方法的,所以只是部分实例化,这也表现了实例和对象之间的区别。再举个例子:动物下有狗这种子类,狗有一个对象叫做小汪,小汪也是动物的一个实例,关键是你怎么给小汪划分类型了。
  其实学语言没必要纠结这些名词之间的差异的,有些名词的迷惑都是翻译的锅,但是有时候有些地方的描述让人不得不理一下名词之间的区别,这里只是个人看法,大家觉得这样理解没问题就这样理解吧。

你可能感兴趣的:(Java知识点)