有人告诉我:关于继承:
1.method可以覆盖,动态绑定
2.fields不能覆盖,可以被隐藏
3.static的不能被覆盖.但是:
我下面的程序: static 的field 和 method 都可以被覆盖:
class A
{
public static int a=3;
public static void m1(){System.out.println("AAAA");}
}
public class B extends A
{
public static int a=8;
public static void m1(){System.out.println("BBBB");}
public static void main(String args[])
{
B xx=new B();
System.out.println("a="+xx.a);
xx.m1();
}
}
1.method可以覆盖,动态绑定
2.fields不能覆盖,可以被隐藏
3.static的不能被覆盖.但是:
我下面的程序: static 的field 和 method 都可以被覆盖:
class A
{
public static int a=3;
public static void m1(){System.out.println("AAAA");}
}
public class B extends A
{
public static int a=8;
public static void m1(){System.out.println("BBBB");}
public static void main(String args[])
{
B xx=new B();
System.out.println("a="+xx.a);
xx.m1();
}
}
楼主【sure2003】截止到2008-07-26 10:14:53的历史汇总数据(不包括此帖):
发帖的总数量:267 发帖的总分数:11023 每贴平均分数:41
回帖的总数量:230 得分贴总数量:7 回帖的得分率:3%
结贴的总数量:261 结贴的总分数:10833
无满意结贴数:2 无满意结贴分:50
未结的帖子数:6 未结的总分数:190
结贴的百分比:97.75 % 结分的百分比:98.28 %
无满意结贴率:0.77 % 无满意结分率:0.46 %
值得尊敬
class A
{
public static int a=3;
public static void m1(){System.out.println("AAAA");}
}
public class B extends A
{
public static int a=8;
public static void m1(){System.out.println("BBBB");}
public static void main(String args[])
{
A xx=new B();
System.out.println("a="+xx.a);
xx.m1();
}
}这样你就可以看出结果了,输出都是A类中的值。说明了static不具有多态的特点,只能被隐藏。
public class B extends A
{
public static int a=8;//
public static void m1(){System.out.println(a);}//可以把这两个分别注释掉看看。
public static void main(String args[])
{
A yy =new A();
B xx=new B();
System.out.println("yy.a="+yy.a);//3
System.out.println("xx.a="+xx.a);//8
yy.m1();//结果3
xx.m1();//结果8
}
}
class A
{
public static int a=3;
public static void m1(){System.out.println(a);}
}
{
public static int a=3;
public static void m1(){System.out.println("AAAA");}
}
public class B extends A
{
public static int a=8;
public static void m1(){System.out.println("BBBB");}
public static void main(String args[])
{
B xx=new B();
System.out.println("a="+xx.a);
xx.m1();
}
}JAVA虚拟机在执行XX.m1()时,调用的是b类的m1(),所以可见父类的方法被子类隐藏,如果,在运用够在函数的时候,A xx = new B();这样父类的方法就不会被子类隐藏!
class A
{
public static int a=3;
public static void m1(){System.out.println("AAAA");}
}
public class B extends A
{
public static int a=8;
public void m1(){System.out.println("BBBB");}//你这里改下,运行一下就知道不能覆盖了!!!你加上static 就是另外
//一个方法了
public static void main(String args[])
{
A xx=new B();
System.out.println("a="+xx.a);
xx.m1();
}
}
public static void main(String args[])
{
B xx=new B();
System.out.println("a="+xx.a);
xx.m1();
} 这里XX和A有关系么?
{
public int a=5;
}
class B1 extends A1
{
public int a=8;
void print(){
System.out.println(super.a);
System.out.println(a);
}
}
class TestStatic
{
public static void main(String args[])
{
new B1().print();
}
}这里没有静态,怎么也出现隐藏这回事啊????????????
fields不能覆盖,可以被隐藏,这跟static 没有关系
//静态成员不能被覆盖class A
{
public static int a = 3; public static void m1()
{
System.out.println("AAAA");
}}class B extends A
{
public static int a = 8; public static void m1()
{
System.out.println("BBBB");
} public static void main(String args[])
{
B xx = new B();
System.out.println("a=" + xx.a);
xx.m1();
A yy = new B();
System.out.println("a=" + yy.a); //看看打印什么
yy.m1(); //看看打印什么
}}