zoukankan      html  css  js  c++  java
  • 接口与继承系列教材 (三)- Java 重写方法

    子类可以继承父类的对象方法 


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

    又叫覆盖 override
    步骤1:父类Item
    步骤2:子类LifePotion
    步骤3:调用重写的方法
    步骤4:如果没有重写这样的机制怎么样?
    步骤5:练习-重写
    步骤6:答案-重写
    步骤 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("血瓶使用后,可以回血");
        }
    }
  • 相关阅读:
    BZOJ 3132: 上帝造题的七分钟 树状数组+差分
    PAT Advanced 1006 Sign In and Sign Out (25 分)
    PAT Advanced 1011 World Cup Betting (20 分)
    PAT Basic 1032 挖掘机技术哪家强 (20 分)
    PAT Basic 1028 人口普查 (20 分)
    PAT Basic 1004 成绩排名 (20 分)
    大数据数据库HBase(二)——搭建与JavaAPI
    PAT Advanced 1009 Product of Polynomials (25 分)(vector删除元素用的是erase)
    PAT Advanced 1002 A+B for Polynomials (25 分)(隐藏条件,多项式的系数不能为0)
    PAT Basic 1041 考试座位号 (15 分)
  • 原文地址:https://www.cnblogs.com/Lanht/p/12572287.html
Copyright © 2011-2022 走看看