如何调用父类的父类的方法?

SilentHunter460 2020-04-05 03:22:00
爷爷类有一个降龙十八掌,爸爸类重写了这个十八掌,但是现在我要用爷爷的那个降龙十八掌。
...全文
494 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SilentHunter460 2020-04-06
  • 打赏
  • 举报
回复
引用 3 楼 paullbm 的回复:
从功能实现上来说,你可以通过参数传递来决定用谁的降龙十八掌的技能! 但从设计上来说,产生了子类要调用父类方法的情况,尤其还出现了孙子要调用爷爷的方法的情况时,那说明设计本身出了问题!
举个例子,s1和s2对象的hashcode结果是一样的,obj1和obj2的hashcode是不一样的。Object对象的hashcode方法是从对象地址得到散列码。String对象的hashcode方法被重写了,用字符内容计算的,一样的字符计算结果肯定是不变。 也就是说,hashcode在String对象不太灵光了。

public class test {

	public static void main(String[] args) {
		String s1 = new String("123");
		String s2 = new String("123");
		System.out.println(s1.hashCode());
		System.out.println(s2.hashCode());
		
		Object obj1 = new Object();
		Object obj2 = new Object();
		System.out.println(obj1.hashCode());
		System.out.println(obj2.hashCode());
	}

}
神秘的天 2020-04-05
  • 打赏
  • 举报
回复
说实话,都重写了,你再也找不到你的爷爷类方法了,只能看到你爸爸类方法了
sotondolphin 2020-04-05
  • 打赏
  • 举报
回复
想用爷爷的降龙十八掌,就需要把你爷爷的降龙十八掌作为依赖注入到孙子的类里面
  • 打赏
  • 举报
回复
引用 2 楼 qq_16774199 的回复:
你好,你是假设爸爸照抄了爷爷的十八掌。可要是爸爸把十八掌练歪了,现在我不得不找爷爷的十八掌来练。

Java重写只是存在在父子类之间的概念,子类只能重写父类的
paullbm 2020-04-05
  • 打赏
  • 举报
回复
从功能实现上来说,你可以通过参数传递来决定用谁的降龙十八掌的技能! 但从设计上来说,产生了子类要调用父类方法的情况,尤其还出现了孙子要调用爷爷的方法的情况时,那说明设计本身出了问题!
SilentHunter460 2020-04-05
  • 打赏
  • 举报
回复
引用 1 楼 似水流年风萧兮 的回复:

/**
 * 爷爷类
 */
public class Grandfather {

	public void skill() {
		System.out.println("爷爷十八拳");
	}
}

/**
 * 父亲类
 */
public class Parent extends Grandfather {

	@Override
	public void skill() {
		super.skill();
	}
}


/**
 * 孩子类
 */
public class Chirdren extends Parent {

	@Override
	public void skill() {
		super.skill();
	}
}


/**
 * 测试
 */
public class Test {

	public static void main(String[] args) {
		Chirdren c = new Chirdren();
		c.skill();
	}
}

你好,你是假设爸爸照抄了爷爷的十八掌。可要是爸爸把十八掌练歪了,现在我不得不找爷爷的十八掌来练。
  • 打赏
  • 举报
回复

/**
* 爷爷类
*/
public class Grandfather {

public void skill() {
System.out.println("爷爷十八拳");
}
}

/**
* 父亲类
*/
public class Parent extends Grandfather {

@Override
public void skill() {
super.skill();
}
}


/**
* 孩子类
*/
public class Chirdren extends Parent {

@Override
public void skill() {
super.skill();
}
}


/**
* 测试
*/
public class Test {

public static void main(String[] args) {
Chirdren c = new Chirdren();
c.skill();
}
}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧