学习Java之通过对象标识符可操作对象的哪些属性和方法的点滴体会

再说这个主题的时候,我们先大致看一下我画的有点不可观赏的类文件的关系图。通过上图,我们知道一类对象的对象描述文件类文件之间是有相互关联关系的。

所以,对于一个具体对象而言,此对象的属性和方法就有可能被在不同的对象描述文件中所描述。例如:当我们使用对象描述文件要描述这个对象的时候,对于花的子类,不同的子类就会有不同的特征。如——有的花有有刺,有的花没有刺,有的花夏天开,有的花冬天开;有的花五颜六色,有的花一种颜色等等……因此,我们不可能把世界上所有花的特征都写在一个描述文件里面。那么这个时候,我们把各类型的花分别写在不同的对象描述文件中是比较合理的方法。这个时候,由于同类对象间的细微差别,如同类花中的个别花突然出现了新的特征,这个时候,我们就要为它新建一个描述文件,但是它的一些特征与同类花还是一样的,那此时这个花就即有同类花的相关特征,又有自己的独有特征。面对这种情况,当我们创建一个以花命名的对象时,我们所操作的对象的属性和方法是哪些呢,又或是在哪些对象描述文件中定义的?这个就是我这个不成篇幅的小文章所要说明的一个小问题。

在Java代码中,我们知道,我们想要使用对象的属性和方法时,我们便使用引用标识符来标识我们所有使用的具体对象,这个时候,对象引用标识符和对象之间呈现一对一的对应关系,即一个引用标识符在同一时间内只表示唯一的一个对象

因为Java语言的多态性和对象标识符声明的类型存在转型(从顶层Object根类到创建对象时所用的类之间的所有的类型,都是此对象可以转换的类型,即子类创建的对象一定也是父类对象,但父类创建的对象一定不是子类对象),所以在Java中,就存在有可能用子类创建父类对象的情况,因为父类对象中包含所有的子类对象,父类与子类是包含关系。

此时,当我们用一个父类型标识符来标识一个子类型描述文件创建的对象时,我们看似是创建了一个父类型对象,实质是创建了一个子类型的对象。

①、那么我们通过引用标识符来操作这个对象的属性时,我们都能使用哪些属性呢?那就是从我们声明标识符所用的对象描述文件开始一直到对象的Object根类文件这条联系线上的所有文件中的属性描述集合中的属性都可以使用,当这些对象描述文件中有重定义属性时,我们只能使用子类描述文件中最后一次定义的这一属性,因为此时的属性更加接近我们所创建的对象的属性,此时的属性更加精确与贴近实际;

②、通过此引用标识符,我们可以使用对象的哪些方法呢?这个时候,我们就要格外小心了,因为我们所使用的方法和此方法的具体实现有可能是相分离的。我们可使用的方法名从引用标识符所声明的类型一直向上到Object根类型中所定义的方法的集合中的方法都可以使用,当有父类方法在子类中被覆盖时,我们所有的方法是覆盖了父类方法的子类中的相同结构的方法,即最近一次被现实的方法。为什么说我们所使用的方法和此方法的具体实现有可能是相分离的呢?那是因为,我们可使用的方法在创建对象的类描述文件中重新定义的话,我们所使用的方法实现就是创建对象使用的类描述文件中的实现,而不是声明对象标识符的类描述文件中的方法实现,就是说,这一方法的实现不声明中的方法的实现还要新。

 

猜你喜欢

转载自blog.csdn.net/Anglebeat/article/details/83538273
今日推荐