JAVA-初步认识-第八章-继承-子父类中成员变量的特点

一.

谈论完继承之后,我们来看一下,继承这个知识点在代码中的体现。之前书写代码的时候,类和类之间并无关系。现在有了继承之后,类与类之间有了父子关系,我们看一下程序代码中是如何表现的。

子父类出现后,到底给我们的代码带来了哪些特点呢?

(由上面的截图,我想到函数的分类,有哪几种?不同类别之间的区别是什么?)

先从成员变量入手,介绍程序中继承关系。从截图中的例子可以看出,是先有了继承关系,后面才有的相同代码省略(提高了复用性)。

因为继承,直接拿过来用。

我们讨论成员变量,当然着重讲解特殊性。看下面的截图,子父类中有相同的名称的变量,在调用变量时,我们就不知道到底调用的是谁。

DOS的结果显示两个都是5,这里插一句,子要是有,就不找父。包括之前谈论的,局部有,就不找成员。这是从表面现象分析出来的一个道理。从内存空间而言,就是自己本空间有,就不去外面去寻找。

这里产生一个问题,我们就是想要操作父类中的num=4,该怎么做?
既然子已经继承父类,那么子中就有这个num=4。(这里是想要不改变名称,而获得这样的效果么?)

有一种想法,是子类中的num=5覆盖了父类中的num=4。注意:子类中,int num=5; num=9; 才是同一变量的覆盖。但是子类中num和父类中num完全是两个变量,它们都有自己的所属。

那么到底如何操作父类中的num,这时候可以使用一个关键字,

(super不代表父类对象)

相似不是相同,用法想像,代表不一样。

这时有父类和子类,写上this代表的是本类,如果不想代表本类了,就用super代表父类。编译运行,DOS显示没有错。

 为什么父类不代表父类对象,而是代表父类空间?在代码中,只有一个子类对象,并没有父类对象。所以它不能代表父类对象,只能代表父类加载进来的所属空间。子类为什么能够获取父类中的内容呢?那是因为子类持有super引用。

在没有学习子父类之前,弄一个对象去调用一个方法,这方法一进栈,这里面就有了一个叫做this,用this来绑定调用方法的对象。而有了子父类以后,子类凭什么要管父类叫爹,那是因为写了extends的关键字。到时候,没有的情况下,再一次到我们的父类中查找,怎么找这个父类。我们在继承的时候,就有了super,super就指向extends的父类。

当extends时,子类都持有super,这super就立刻指向这个父。用super就可以访问父类中的内容了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-10-26 10:30  前锋营  阅读(1135)  评论(0编辑  收藏  举报