多重继承(多于两重)中怎样调用最上层的隐藏的成员? 可不可以这样: 在b中通过super调用a的print(),然后再在c中调用b的这个method!小弟初学java四天,如果不对请多多原谅,献丑了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是不是可以这样:在C类中设定一个方法,其参数行为(A a)方法体中使用if(a instanceof A) { a.print(); }将一个类的实例传入,如果是A类型的则会执行A中的print();你还可以去查一下“下溯造型”==“DownCasting”; 如果是继承,只要你的设计没问题,调用c中print时,自己就会调用a中的,毕竟是继承嘛!不要忘了! 辛苦辛苦,这个知识点给忘记了,呵呵,好不容易找了回来,你自己看看吧public class ShadowTest {public static void main(String s[]){new STChild().demo();}}class STGrandParent {double wealth = 50000.00;public double getWealth() {System.out.println("GrandParent-" + wealth);return wealth;}}class STParent extends STGrandParent {double wealth = 100000.00;public double getWealth() {System.out.println("Parent-" + wealth);return wealth;}}class STChild extends STParent {double wealth = 200000.00;public double getWealth() {System.out.println("Child-" + wealth);return wealth;}public void demo() {getWealth(); // Calls Child methodsuper.getWealth(); // Calls Parent method//super.super.getWealth(); // Compiler error, GrandParent method cannot be accessed((STParent)this).getWealth(); // Calls Child method, due to dynamic method lookup((STGrandParent)this).getWealth(); // Calls Child method, due to dynamic method// lookupSystem.out.println(wealth); // Prints Child wealthSystem.out.println(super.wealth); // Prints Parent wealthSystem.out.println(((STParent)(this)).wealth); // Prints Parent wealthSystem.out.println(((STGrandParent)(this)).wealth); // Prints GrandParent wealth}} 修正一下楼上的,这样可以实现上上级方法回嗍,但是记住,面向对象的类继承最好的是到3层,如果多了将大大增加系统的开销。你可以在每一层实现对上层的重载。public class ShadowTest { public static void main(String args[]){ new STChild().demo(); }}class STGrandParent { double wealth = 50000.00; public double getWealth() { System.out.println("GrandParent-" + wealth); return wealth; }}class STParent extends STGrandParent { double wealth = 100000.00; public double getWealth() { System.out.println("Parent-" + wealth); return wealth; } public double getGrandPWealth() { return super.getWealth(); }}class STChild extends STParent { double wealth = 200000.00; public double getWealth() { System.out.println("Child-" + wealth); return wealth; } public double getGrandPWealth() { return super.getGrandPWealth(); } public void demo() { getWealth(); // Calls Child method super.getWealth(); // Calls Parent method //super.super.getWealth(); // Compiler error, GrandParent method cannot be accessed ((STParent)this).getWealth(); // Calls Child method, due to dynamic method lookup ((STGrandParent)this).getWealth(); // Calls Child method, due to dynamic method this.getGrandPWealth(); // Calls GrandParent method; // lookup System.out.println(wealth); // Prints Child wealth System.out.println(super.wealth); // Prints Parent wealth System.out.println(((STParent)(this)).wealth); // Prints Parent wealth System.out.println(((STGrandParent)(this)).wealth); // Prints GrandParent wealth }} too Patric_Dkso goog bright boy to ggyy goog 是嘛意思? 高手请教 问题 刚学strsuts 想学JAVA,有两个问题还不太明白 简单问题(庆祝春节) 网线断开判断 请教。谢谢 JTable中嵌入一列ComboBox SVF JavaPRODUCTS 一个简单编译问题 500分求助,java做的折线图,柱型图,等图形!!!online jdk在2000里面的环境变量问题??20分 我进入JB6时提示出错。不能进入?具体情况见内容。 java用的是unicode, c 用的哪种字符编码?
在C类中设定一个方法,其参数行为(A a)
方法体中使用if(a instanceof A)
{
a.print();
}
将一个类的实例传入,如果是A类型的则会执行A中的print();
你还可以去查一下“下溯造型”==“DownCasting”;
毕竟是继承嘛!不要忘了!
public class ShadowTest {
public static void main(String s[]){
new STChild().demo();
}
}
class STGrandParent {
double wealth = 50000.00;
public double getWealth() {
System.out.println("GrandParent-" + wealth);
return wealth;
}
}
class STParent extends STGrandParent {
double wealth = 100000.00;
public double getWealth() {
System.out.println("Parent-" + wealth);
return wealth;
}
}
class STChild extends STParent {
double wealth = 200000.00;
public double getWealth() {
System.out.println("Child-" + wealth);
return wealth;
}
public void demo() {
getWealth(); // Calls Child method
super.getWealth(); // Calls Parent method
//super.super.getWealth(); // Compiler error, GrandParent method cannot be accessed
((STParent)this).getWealth(); // Calls Child method, due to dynamic method lookup
((STGrandParent)this).getWealth(); // Calls Child method, due to dynamic method
// lookup
System.out.println(wealth); // Prints Child wealth
System.out.println(super.wealth); // Prints Parent wealth
System.out.println(((STParent)(this)).wealth); // Prints Parent wealth
System.out.println(((STGrandParent)(this)).wealth); // Prints GrandParent wealth
}
}
public class ShadowTest {
public static void main(String args[]){
new STChild().demo();
}
}
class STGrandParent {
double wealth = 50000.00;
public double getWealth() {
System.out.println("GrandParent-" + wealth);
return wealth;
}
}
class STParent extends STGrandParent {
double wealth = 100000.00;
public double getWealth() {
System.out.println("Parent-" + wealth);
return wealth;
}
public double getGrandPWealth() {
return super.getWealth();
}
}
class STChild extends STParent {
double wealth = 200000.00;
public double getWealth() {
System.out.println("Child-" + wealth);
return wealth;
}
public double getGrandPWealth() {
return super.getGrandPWealth();
}
public void demo() {
getWealth(); // Calls Child method
super.getWealth(); // Calls Parent method
//super.super.getWealth(); // Compiler error, GrandParent method cannot be accessed
((STParent)this).getWealth(); // Calls Child method, due to dynamic method lookup
((STGrandParent)this).getWealth(); // Calls Child method, due to dynamic method
this.getGrandPWealth(); // Calls GrandParent method;
// lookup
System.out.println(wealth); // Prints Child wealth
System.out.println(super.wealth); // Prints Parent wealth
System.out.println(((STParent)(this)).wealth); // Prints Parent wealth
System.out.println(((STGrandParent)(this)).wealth); // Prints GrandParent wealth
}
}
so goog bright boy