static public void second(){ System.out.println("second"); } } class Derived extends Base{ static public int i=2; static public void second(){ System.out.println("derived second"); } } public class test{ public static void main(String[] args){ Base aa=new Derived(); aa.second(); System.out.println(aa.i); } } 但是怎么解释这段代码的输出结果呢?second 1
Base aa=new Derived();aa.second(); //Base System.out.println(aa.i); //Base((Derived)aa).second(); //Derived System.out.println(((Derived)aa).i); //Derived
为什么加了static aa.i;调用的是base 而 没有static (public int i;) aa.i; 调用的却是derived
static public int i=1;
static public void second(){
System.out.println("second");
}
}
class Derived extends Base{
static public int i=2;
static public void second(){
System.out.println("derived second");
}
}
public class test{
public static void main(String[] args){
Base aa=new Derived();
aa.second();
System.out.println(aa.i);
}
}
但是怎么解释这段代码的输出结果呢?second
1
System.out.println(aa.i); //Base((Derived)aa).second(); //Derived
System.out.println(((Derived)aa).i); //Derived
而 没有static (public int i;) aa.i; 调用的却是derived