父类和子类有同名的变量,无论静态或非静态,好像都是只看左边。因为静态是直接绑定在所属类中的。
那么。我想问下。是不是静态和非静态情况下。其最终结果,最后都是一样的?作者: 施家雄 时间: 2013-3-11 01:26
首先是成员函数在多态中调用时,编译看左边,运行看右边。其结果不是一样的。例如:class Fu
{
static String age()
{
return " I am a old man";
}
String name()
{
return "LaoZi";
}
}
class Zi extends Fu
{
static String age()
{
return "I am a young man";
}
String name()
{
return "ErZi";
}
}
class Test
{
public static void main(String[] args)
{
Zi s = new Zi(); //(1)
Fu s=new Zi(); //(2)
System.out.println(s.age() + ", " + s.name());
}
}
//(1)输出结果为 I am a young man ErZi
//(2) 输出结果为 I am a old man Erzi作者: 陈宇鹏 时间: 2013-3-11 01:28
施家雄 发表于 2013-3-11 01:26
首先是成员函数在多态中调用时,编译看左边,运行看右边。其结果不是一样的。例如:class Fu
{
stati ...
大哥,函数的我懂,我是说成员变量,你没看题吧,哈哈作者: 李阳 时间: 2013-3-11 01:52
class DuoTaiDemo1
{
public static void main(String[] args)
{
Student s ;
s = new BaseStudent();
s.sleep();//调用的是父类的方法
System.out.println(s.age);//显示的是父类age
System.out.println(s.num);//显示的是父类num
}
}
class Student
{
int age =1;
static int num =1;
public void study()
{
System.out.println("挑灯夜战");
}
public static void sleep()
{
System.out.println("dangzheshui");
}
}
class BaseStudent extends Student
{
int age = 12;
static int num =12;
public void study()
{
System.out.println("javaee");
}
public static void sleep()
{
System.out.println("zuozheshui");
}