题目:
有以下代码
class Super{
public static void m1(){
System.out.println("m1 in Super");
}
public void m2(){
System.out.println("m2 in Super");
}
}
class Sub extends Super{
public static void m1(){
System.out.println("m1 in Sub");
}
public void m2(){
System.out.println("m2 in Sub");
}
}
public class TestMain{
public static void main(String args[]){
Super sup = new Sub();
sup.m1();
sup.m2();
Sub sub = (Sub) sup;
sub.m1();
sub.m2();
}
}
写出这个程序的运行结果。
解:
package test5;
/*(静态方法)有以下代码*/
class Super {
public static void m1() {
System.out.println("m1 in Super");
}
public void m2() {
System.out.println("m2 in Super");
}
}
class Sub extends Super {
public static void m1() {
System.out.println("m1 in Sub");
}
public void m2() {
System.out.println("m2 in Sub");
}
}
public class Test5{
public static void main(String args[]) {
Super sup = new Sub();
sup.m1();//静态不覆盖"m1 in Super"
sup.m2();//"m2 in Sub"
Sub sub = (Sub) sup;//括号是对象类型的强转,此题中等号右边效果等同于new Sub();,选择写成强转是为了节省一块内存空间
sub.m1();//"m1 in Sub"
sub.m2();//"m2 in Sub"
}
}
// 写出这个程序的运行结果。
/*m1 in Super
m2 in Sub
m1 in Sub
m2 in Sub*/
注释:
Sub sub = (Sub) sup;//括号是对象类型的强转,此题中等号右边效果等同于new Sub();,选择写成强转是为了节省一块内存空间