java中子类调用祖父类(父类的父类)的方法
publicclassA{publicbooleanmethodTest(){System.out.println("A=========================...
public class A {
public boolean methodTest(){
System.out.println("A==================================");
return true;
}
}
public class B extends A{
public boolean methodTest(){
System.out.println("B==================================");
return false;
}
}
public class C extends B{
public boolean methodTest(){
return super.methodTest();
}
}
public class TestClass {
public static void main(String[] args){
C c = new C();
c.methodTest();
}
}
注意:前提是不改变A,B的代码。
现在输出的是“B==================================”
如何能*只*输出A==================================
那个.........好吧!是我没说明白。不要试图改变A,B的结构解决问题,也不要改变集成关系解决问题。 展开
public boolean methodTest(){
System.out.println("A==================================");
return true;
}
}
public class B extends A{
public boolean methodTest(){
System.out.println("B==================================");
return false;
}
}
public class C extends B{
public boolean methodTest(){
return super.methodTest();
}
}
public class TestClass {
public static void main(String[] args){
C c = new C();
c.methodTest();
}
}
注意:前提是不改变A,B的代码。
现在输出的是“B==================================”
如何能*只*输出A==================================
那个.........好吧!是我没说明白。不要试图改变A,B的结构解决问题,也不要改变集成关系解决问题。 展开
8个回答
展开全部
public class C extends B {
public boolean methodTest(){
return new A().methodTest();
}
}
这样吧,完全符合的你要求了
public boolean methodTest(){
return new A().methodTest();
}
}
这样吧,完全符合的你要求了
追问
谢谢回答,你说的这种方法我想过。但是实际的业务是:B中有很多属性是父类A维护的,所以调用完父类的方法后B中属性的值会有变化,我想要在C中的可以获取B中的某些属性,所以这个方法也不行,而new B()的话又无法调用父类A的方法。
追答
java里面只允许单继承,你那想法是无法实现的吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本人才疏学浅,先给我的结论,不动AB实现不了你的功能。
C中有对B对象的super引用,用这个对象只能访问B的对象空间,但是目前不让修改B,就是B已经确定了。现在想访问A,似乎JAVA中不存在这种语法,如果可以麻烦告知。
liruoliangqq@126.com
C中有对B对象的super引用,用这个对象只能访问B的对象空间,但是目前不让修改B,就是B已经确定了。现在想访问A,似乎JAVA中不存在这种语法,如果可以麻烦告知。
liruoliangqq@126.com
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将C直接继承A
追问
那个.........好吧!是我没说明白。不要试图改变A,B的结构解决问题,也不要改变集成关系解决问题
追答
我只能两个都输出
public class TestClass {
public static void main(String[] args){
C1 c = new C1();
c.methodTest();
}
}
class A1{
public boolean methodTest(){
System.out.println("A==================================");
return true;
}
}
class B1 extends A1{
public boolean methodTest(){
super.methodTest();
System.out.println("B==================================");
return false;
}
}
class C1 extends B1{
public boolean methodTest(){
return super.methodTest();
}
}
参考资料: A
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询