Java子类调用父类函数实验

本文探讨了如何在类继承结构中,通过特定方法调用不同层次类的同名函数。主要介绍了尝试失败的几种方案及最终采用的反射机制解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:

假设定一个类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();


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值