Java自学-接口与继承 重写
程序员文章站
2022-03-21 18:09:19
Java 重写方法 子类可以继承父类的对象方法 在继承后,重复提供该方法,就叫做方法的重写 又叫覆盖 Override 步骤 1 : 父类Item 父类Item有一个方法,叫做effect package property; public class Item { String name; int ......
java 重写方法
子类可以继承父类的对象方法
在继承后,重复提供该方法,就叫做方法的重写
又叫覆盖 override
步骤 1 : 父类item
父类item有一个方法,叫做effect
package property; public class item { string name; int price; public void buy(){ system.out.println("购买"); } public void effect() { system.out.println("物品使用后,可以有效果"); } }
步骤 2 : 子类lifepotion
子类lifepotion继承item,同时也提供了方法effect
package property; public class lifepotion extends item{ public void effect(){ system.out.println("血瓶使用后,可以回血"); } }
步骤 3 : 调用重写的方法
调用重写的方法
调用就会执行重写的方法,而不是从父类的方法
所以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(); } }
步骤 4 : 如果没有重写这样的机制怎么样?
如果没有重写这样的机制,也就是说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("血瓶使用后,可以回血"); } }
练习:
(设计一个类magicpotion 蓝瓶,继承item, 重写effect方法
并输出 “蓝瓶使用后,可以回魔法”)
答案:
package property; public class magicpotion extends item{ public void effect(){ system.out.println("蓝瓶使用后,可以回魔法"); } }