你这个问题看能不能这样 你在子类写一个同名变量,父类的方法不重写,然后在子类调用时把这个同名变量作为参数传进这个方法 例如: public class BaseClass { public String field1 = "in Base"; public void print(String str) { System.out.println(str); } BaseClass() {} }public class DerivedClass extends BaseClass{ public String field1 = "in Derived";
public static void main(String args[]) { DerivedClass obj = new DerivedClass(); super.print(this.field1); } }
不太知道,去了解一下java的命名空间。
当然可以行得通了。 public class BaseClass { public String field1 ; public void print() { System.out.println(field1); } BaseClass() { field1 = "in base."; //在构造方法中初始化 } }public class DerivedClass { //不用重新定义field1。自动继承父类的field1 DerivedClass(){ field1 = "Derivaed class"; } public static void main(String args[]) { BaseClass obj = new DerivedClass(); obj.print(); } }
你在子类写一个同名变量,父类的方法不重写,然后在子类调用时把这个同名变量作为参数传进这个方法
例如:
public class BaseClass {
public String field1 = "in Base";
public void print(String str) {
System.out.println(str);
} BaseClass() {}
}public class DerivedClass extends BaseClass{
public String field1 = "in Derived";
public static void main(String args[]) {
DerivedClass obj = new DerivedClass();
super.print(this.field1);
}
}
public class BaseClass {
public String field1 ;
public void print() {
System.out.println(field1);
} BaseClass() {
field1 = "in base."; //在构造方法中初始化
}
}public class DerivedClass {
//不用重新定义field1。自动继承父类的field1
DerivedClass(){
field1 = "Derivaed class";
}
public static void main(String args[]) {
BaseClass obj = new DerivedClass();
obj.print();
}
}
public String getField1() { return this.field1; }
子类也写一个一模一样的,
然后在父类的print里写
System.out.println(this.getField1());就可以得到正确结果。
我看了java的语言规范,后面这样结果正确,是因为对method的“后期绑定”,现在问题是,这样写这个方法的代码完全一抹一样,我还要把它考来考去,太不优美了!
public String field1 ;
public void print() {
System.out.println(field1);
} BaseClass() {
field1 = "in base."; //在构造方法中初始化
}
}public class DerivedClass extends BaseClass{
//不用重新定义field1。自动继承父类的field1
DerivedClass(){
field1 = "Derivaed class";
}
public static void main(String args[]) {
BaseClass obj = new DerivedClass();
obj.print();
}
}