JAVA,假重写,方法假重写,继承父类时的静态方法假重写,静态方法假重写
2017-05-18 14:43
591 查看
做题的时候遇到的一个JAVA子类假重写父类静态方法的问题。
————————————————————————————————————————————————————————————————————————
//父类代码。在父类中定义一个静态方法TSa1,一个非静态方法TSa2
public class TestExtendStatic {
public static void TSa1(){
System.out.println("Super Static");
}
public void TSa2(){
System.out.println("Super void");
}
}
————————————————————————————————————————————————————————————————————————
/*子类代码。在子类中,按照方法重写的格式分别重写静态方法TSa1与非静态方法TSa2
*运行结果证明,TSa2确实被重写了,但是TSa1是一个假重写。
* 从测试结果看出,父类的静态方法不会被重写,子类就算以重写的格式“重写”父类的静态方法,也只是得到了一个假*重写。
*/
public class TestExtendStaticSub extends TestExtendStatic {
public static void TSa1(){
System.out.println("Sub Static");
}
public void TSa2(){
System.out.println("Sub void");
}
public static void main(String[] args) {
TestExtendStatic a = new TestExtendStaticSub();
TestExtendStaticSub b = new TestExtendStaticSub();
a.TSa1();//Super Static
b.TSa1();//Sub Static
a.TSa2();Sub void
b.TSa2();Sub void
}
}
————————————————————————————————————————————————
/*进一步测试。从父类继承下来的静态方法TSa1()去哪了
*将子类中的TSa1()注释掉之后再执行,发现a.TSa1();的执行结果又变回了Super Static。说明父类的TSa1();又出现
*了
*所以说,父类的静态方法还是成功被子类继承了,只不过当子类中出现同签名方法时,继承的静态方法会隐藏掉。
*/
public class TestExtendStaticSub extends TestExtendStatic {
/*public static void TSa1(){
System.out.println("Sub Static");
}*/
public void TSa2(){
System.out.println("Sub void");
}
public static void main(String[] args) {
TestExtendStatic a = new TestExtendStaticSub();
a.TSa1();//执行结果Super Static
TestExtendStaticSub b = new TestExtendStaticSub();
b.TSa1();
a.TSa2();
b.TSa2();
}
————————————————————————————————————————————————————————————————————————
//父类代码。在父类中定义一个静态方法TSa1,一个非静态方法TSa2
public class TestExtendStatic {
public static void TSa1(){
System.out.println("Super Static");
}
public void TSa2(){
System.out.println("Super void");
}
}
————————————————————————————————————————————————————————————————————————
/*子类代码。在子类中,按照方法重写的格式分别重写静态方法TSa1与非静态方法TSa2
*运行结果证明,TSa2确实被重写了,但是TSa1是一个假重写。
* 从测试结果看出,父类的静态方法不会被重写,子类就算以重写的格式“重写”父类的静态方法,也只是得到了一个假*重写。
*/
public class TestExtendStaticSub extends TestExtendStatic {
public static void TSa1(){
System.out.println("Sub Static");
}
public void TSa2(){
System.out.println("Sub void");
}
public static void main(String[] args) {
TestExtendStatic a = new TestExtendStaticSub();
TestExtendStaticSub b = new TestExtendStaticSub();
a.TSa1();//Super Static
b.TSa1();//Sub Static
a.TSa2();Sub void
b.TSa2();Sub void
}
}
————————————————————————————————————————————————
/*进一步测试。从父类继承下来的静态方法TSa1()去哪了
*将子类中的TSa1()注释掉之后再执行,发现a.TSa1();的执行结果又变回了Super Static。说明父类的TSa1();又出现
*了
*所以说,父类的静态方法还是成功被子类继承了,只不过当子类中出现同签名方法时,继承的静态方法会隐藏掉。
*/
public class TestExtendStaticSub extends TestExtendStatic {
/*public static void TSa1(){
System.out.println("Sub Static");
}*/
public void TSa2(){
System.out.println("Sub void");
}
public static void main(String[] args) {
TestExtendStatic a = new TestExtendStaticSub();
a.TSa1();//执行结果Super Static
TestExtendStaticSub b = new TestExtendStaticSub();
b.TSa1();
a.TSa2();
b.TSa2();
}
相关文章推荐
- 关于Java中子类能否继承和重写父类的静态方法问题
- JAVA中子类是否可以可以继承、重写父类的静态方法--总结
- java继承 子类重写父类方法
- JAVA_继承演示03_ExtendsDeamo01.java super关键字 重写父类的方法,中,调用父类的方法
- java 子类继承父类成员变量的隐藏、实现方法的重写
- 2018/01/07JAVA 基础 / 接口与继承:重写【子类继承并覆盖父类的对象方法】、隐藏【子类继承并覆盖父类的类方法】与实现类实现接口方法の区别
- java 继承中的重写父类方法
- java继承时候关于父类中的静态方法的问题
- java中父类有static修饰的方法其子类能继承吗?若子类也有该方法,是覆盖还是重写?
- Java的父类静态方法不能被重写,只能被隐藏
- JAVA基础:子类、父类继承关系 静态块、非静态块、构造函数初始化顺序性、静态非静态方法覆盖
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- java中父类的静态方法不能被重写
- Java中的类成员访问控制符和继承重写父类的方法时的类成员访问控制符的相关问题
- Java编程子类能否重写父类的静态方法探索
- java中父类的静态方法不能被重写
- JAVA_继承演示03_ExtendsDeamo01.java super关键字 重写父类的方法,中,调用父类的方法
- java中父类的静态方法不能被重写
- java中父类的静态方法不能被重写
- java继承中父类和子类静态、非静态代码块,构造函数,静态方法的执行顺序