可以很垃圾的实现,实际编程不要用。public class Test { public static void main(String[] args) { B b = new B(); System.out.println(b.value); } }class A { private int value; public A() { this.value = 10; sub_init();//多态 } public void sub_init() { } }class B extends A { public int value; public void sub_init() { this.value = 10; } }
如果用c++之类的可以直接操作内存的说不定可以试试。java就别想了
谢谢你的提醒啊,我想到一个办法,但是还差一点,你能帮我一下吗? public class Test { public static void main(String[] args) { B b = new B(); System.out.println(b.sub_init()); //这里报错 } }class A implements M { private int value; public A() {
this.sub_init();//多态 } public void sub_init() { this.value=10; } }class B extends A { public int value;} interface M{ public void sub_init(); }
B继承A,B中拥有A中的方法,如果this. 属性在B中没有,就调用A中的属性,否则是B中的属性
this我刚才测试了一下,public class Test { public static void main(String[] args) { B b = new B(); System.out.println(b.value); } }class A { public int value; public A() { System.out.println(this.getClass()); this.value = 10; } public void sub_init() { } }class B extends A { public int value; public void sub_init() { this.value = 10; } } 打印出 class B 0既然是代表b 那么就应该是 b.value=10啊。为什么不能改变了?对属性不起作用吗?不能覆盖属性吗? 只能覆盖方法吗?
以前写的点东西,可以大体对照一下。
public class Test {
public static void main(String[] args) {
B b = new B();
System.out.println(b.value); }}
class A{
private int value;
public A(){
this.value=10;
}
}class B extends A{
public int value;}我刚才测试了一下,B的value值是0,
能不能让b的value值 变成10吗??
B b = new B();
System.out.println(b.value);
}
}class A {
private int value;
public A() {
this.value = 10;
sub_init();//多态
}
public void sub_init() {
}
}class B extends A {
public int value;
public void sub_init() {
this.value = 10;
}
}
public class Test { public static void main(String[] args) {
B b = new B();
System.out.println(b.sub_init()); //这里报错
}
}class A implements M {
private int value;
public A() {
this.sub_init();//多态
}
public void sub_init() {
this.value=10;
}
}class B extends A {
public int value;}
interface M{
public void sub_init();
}
this我刚才测试了一下,public class Test { public static void main(String[] args) {
B b = new B();
System.out.println(b.value);
}
}class A {
public int value;
public A() {
System.out.println(this.getClass());
this.value = 10;
}
public void sub_init() {
}
}class B extends A {
public int value;
public void sub_init() {
this.value = 10;
}
}
打印出 class B
0既然是代表b 那么就应该是 b.value=10啊。为什么不能改变了?对属性不起作用吗?不能覆盖属性吗?
只能覆盖方法吗?