how2j.cn


工具版本兼容问题
子类可以继承父类的对象方法

在继承后,重复提供该方法,就叫做方法的重写

又叫覆盖 override


本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



4分43秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : 父类Item   
步骤 2 : 子类LifePotion   
步骤 3 : 调用重写的方法   
步骤 4 : 如果没有重写这样的机制怎么样?   
步骤 5 : 练习-重写   
步骤 6 : 答案-重写   

父类Item有一个方法,叫做effect
package property; public class Item { String name; int price; public void buy(){ System.out.println("购买"); } public void effect() { System.out.println("物品使用后,可以有效果"); } }
package property;

public class Item {
	String name;
	int price;

	public void buy(){
		System.out.println("购买");
	}
	public void effect() {
		System.out.println("物品使用后,可以有效果");
	}

}
子类LifePotion继承Item,同时也提供了方法effect
package property; public class LifePotion extends Item{ public void effect(){ System.out.println("血瓶使用后,可以回血"); } }
package property;

public class LifePotion extends Item{
	
	public void effect(){
		System.out.println("血瓶使用后,可以回血");
	}
	
}
步骤 3 :

调用重写的方法

edit edit
调用重写的方法
调用就会执行重写的方法,而不是从父类的方法
所以LifePotion的effect会打印:
"血瓶使用后,可以回血"
package property; public class Item { String name; int price; public void effect(){ System.out.println("物品使用后,可以有效果"); } public static void main(String[] args) { Item i = new Item(); i.effect(); LifePotion lp =new LifePotion(); lp.effect(); } }
package property;

public class Item {
	String name;
	int price;
	
	public void effect(){
		System.out.println("物品使用后,可以有效果");
	}
	
	public static void main(String[] args) {
		Item i = new Item();
		i.effect();
		
		LifePotion lp =new LifePotion();
		lp.effect();
	}
	
}
步骤 4 :

如果没有重写这样的机制怎么样?

edit edit
如果没有重写这样的机制,也就是说LifePotion这个类,一旦继承了Item,所有方法都不能修改了。

但是LifePotion又希望提供一点不同的功能,为了达到这个目的,只能放弃继承Item,重新编写所有的属性和方法,然后在编写effect的时候,做一点小改动.

这样就增加了开发时间和维护成本
package property; public class Item { String name; int price; public void buy(){ System.out.println("购买"); } public void effect() { System.out.println("物品使用后,可以有效果"); } }
package property; public class LifePotion { String name; int price; public void buy(){ System.out.println("购买"); } public void effect(){ System.out.println("血瓶使用后,可以回血"); } }
步骤 5 :

练习-重写

练习难度 edit edit Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
设计一个类MagicPotion 蓝瓶,继承Item, 重写effect方法
并输出 “蓝瓶使用后,可以回魔法”
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费2个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费2个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 基础-接口与继承-重写 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 982790551
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图