需求:
假设定一个类A,
定义了一个类B,继承于A,
定义了一个类C,继承于B。
类A、B、C都定义了一个同名函数叫func( )
现在需要使用
C c = new C();
c. 的方式来调用A的func()或者B的func(),请问有方式实现吗?
想法:
1、通过super.super调用
试验后发现行不通,super并不能递归调用,也不能保存
2、在根基类A中定义一个Map<String,Object>成员变量,在A、B、C的构造函数中分别获得类名和this,并放入Map,然后在A中定义一个方法来获取Map内的this,转换后调用func()
试验后发现还是行不通,Map里其实就一个值,类名和this都指向了C
3、利用反射机制,待实现
4、在每层类重新定义一个方法,来调用,代码如下::
A <- B <- C
A是根父类
public class A
{
public void func()
{
System.out.println("[A]");
}
}
public class B extends A
{
@Override
public void func()
{
System.out.println("[B]");
}
public void funcA()
{
super.func();
}
}
public class C extends B
{
@Override
public void func()
{
System.out.println("[C]");
}
public void funcB()
{
super.func();
}
}
C c = new C();
c.funcA();
c.funcB();
c.func();