正在回答 回答被采纳积分+1
2回答
好帮手慕珊
2019-07-28 15:54:30
你好!如果在子类中新定义一个和父类一样的属性,那么父类的属性可以被看成隐藏了。可以看一下下面代码的输出结果,当使用子类的引用调用age,得到的是子类中的值。当使用父类引用调用,得到的是父类的age的值。所以父类的age还是存在的,只是使用的方式不同了。
代码如下:
public class A {
public int age=5;
}
public class B extends A{
public int age=10;
}
public class Test {
public static void main(String[] args) {
B b=new B();
System.out.println(b.age);
A a=new B();
System.out.println(a.age);
}
}如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕小班
2019-07-27 14:16:48
同学你好,1、静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成对,不需要继承机制即可以调用;
(1)如果子类里面定义了静态方法和属性,则这时候父类的静态方法或属性称之为"隐藏";
(2)如果想要调用父类的静态方法和属性,直接通过父类名.方法或变量名完成。
2、这里可以参考如下例子来理解:
父类代码
public class StaticParent {
public static int a = 0;
public static void printA() {
System.out.println("In Parent, a = " + a);
}
}子类代码
public class StaticSon extends StaticParent {
public static void main(String[] args) {
printA();
StaticParent a = new StaticSon();
a.printA();
}
// @Override 这里使用这个注解表示重写这个方法,所以这里不是对这个静态方法的重写
public static void printA() {
System.out.println("In son a = " + a);
}
}结果如下:


所以说这里的printA只是对父类中的方法进行了隐藏,当使用父类引用接收子类对象,调用printA时,还是父类中的方法,并没有被覆盖
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星