子类中成员变量不存在重写的理解
问题描述:
子类中成员变量不存在重写
我记得这个知识点老师在课程中提到过,具体哪一节我忘记了,这个知识点其实很重要,我甚至在自己的学习笔记中都没有记录,只是课程看过后有点印象,当时觉得很简单就忽略过去了,知道我碰到之后的题目才回想起来这个知识点,然后在这里谈一下我的看法。
尝试过的解决方式:
其实这个知识点很简单,但是我想绝大多数同学都不明白如何的不存在重写,我明明在子类中命名了与父类一模一样的相同变量名的变量呀,这个也是当初我在听这个知识点的时候问过自己的问题,但是当时我就忽略了,觉得自己都懂了。
相关代码:
Animal 父类
public class Animal {
String kind = "动物";
public void info() {
System.out.println("我是动物类");
}
public String getKind() {
return this.kind;
}
}
Monkey子类
相关代码:
public class Monkey extends Animal{
String kind = "猴子";
public void info(){
System.out.println("我是猴子");
}
}
相关代码:
测试类
public class Test {
public static void main(String[] args) {
Animal ani = new Monkey();
ani.info();
System.out.println(ani.getKind());
}
}
结果
相关代码:
我是猴子
动物
观点一、我想通过上述的代码,做个总结,方法之所以说是存在重写,是因为,我们用父类的引用指向子类的实例来调用重写的方法的时候,我们调用的是子类实例中的方法,这就说明了我确实重写了,这就是重写的表现形式(个人认为),而我们在调用成员属性的时候,我们可以看到虽然实例是子类,但是我调用的属性kind仍然是父类中的,这就是子类成员变量不存在重写的表现,就像子类不能重写父类的静态方法是一样的
问题二、我想知道为什么会出现这样的情况,难道是因为为了在程序设计的时候更加严谨,更加符合实际的思想,避免代码过渡灵活所以设计成这样吗
以上就是个人的理解,望老师耐心观看,就观点一、问题二做解答,如有错误请指出
正在回答 回答被采纳积分+1
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星