有关于继承的问题。如程序。。
class Test1
{
public String str = "test1";
public String getStr()
{
return str;
}
}
class Test2 extends Test1
{
public String str = "test2";
public String getStr()
{
return str;
}
public static void main(String[] args){
Test1 t1 = new Test2();
System.out.println(t1.str);
System.out.println(t1.getStr());
}}
为什么结果会是test1
test2难道只有方法能被重写,字段不能被重写吗?麻烦高手解释得详细点。
class Test1
{
public String str = "test1";
public String getStr()
{
return str;
}
}
class Test2 extends Test1
{
public String str = "test2";
public String getStr()
{
return str;
}
public static void main(String[] args){
Test1 t1 = new Test2();
System.out.println(t1.str);
System.out.println(t1.getStr());
}}
为什么结果会是test1
test2难道只有方法能被重写,字段不能被重写吗?麻烦高手解释得详细点。
public String getStr()
{
return str;
}
显示的就是test2
System.out.println(t1.getStr());//多态, 运行时根据t1实际类型(Test2),调用相应函数