返回信息流public class A { public class B extends A{
int i = 1; int i = 2;
static int j =3; static int j = 4;
void m(){ void m(){
i = 5 ; i = 6;
} }
static void m1(){ static void m1(){
j = 7; j = 8;
} }
} }
public class Test{
public static void main(String args[]){
A a = new B();
System.out.println(a.i);
System.out.println(a.j);
a.m();
a.m1();
System.out.println(a.i);
System.out.println(a.j);
}
}
为什么输出是:1,3,1,7
而不是: 1,3,6,7?
数据域是声明的类型类的数据域?
静态方法是调用声明类型类的静态方法,而方法调用引用类的方法?
菜鸟再次飘过,给路牛人给予指点呀 ·! 小女子谢过啦!
这是一条镜像帖。来源:北邮人论坛 / java / #15678同步于 2010/9/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【数据域和静态方法】求助,test的输出
HULA
2010/9/14镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
我也很白。。。不过下次你遇到这问题。写几句print自己就能看明白了的。
class C {
static int prt(int i) {
System.out.println(i);
return i;
}
}
class A {
int i = C.prt(1);
static int j = C.prt(3);
void m() {
i = 5;
System.out.println("i="+i);
}
static void m1() {
j = 7;
System.out.println("j="+j);
}
}
class B extends A {
int i = C.prt(2);
static int j = C.prt(4);
void m() {
i = 6;
System.out.println("i="+i);
}
static void m1() {
j = 8;
System.out.println("j="+j);
}
}
public class test {
public static void main(String args[]) {
A a = new B();
System.out.println(a.i);
System.out.println(a.j);
a.m();
a.m1();
System.out.println(a.i);
System.out.println(a.j);
}
}
简单说就是你的a.m();调用类B的方法(多态),但是print出来的是A的值。a.m1()因为是静态方法,所以调用的是A的方法。
因为属性和静态方法不会多态, 调用的还是自己的
【 在 HULA 的大作中提到: 】
: public class A { public class B extends A{
: int i = 1; int i = 2;
: static int j =3; static int j = 4;
: ...................