• java 子类继承父类成员变量的隐藏、实现方法的重写


      成员变量的隐藏和方法的重写

    Goods.java

    public class Goods {
        public double weight;
        public void oldSetWeight(double w) {
           weight=w;
           System.out.println("double型的weight="+weight);
        }
        public double oldGetPrice() {
            double price = weight*10;
            return price;
        }
    }

    CheapGoods.java

    public class CheapGoods extends Goods {
        public int weight;
        public void newSetWeight(int w) {
           weight=w;
           System.out.println("int型的weight="+weight);
        }
        public double newGetPrice() {
            double price = weight*10;
            return price;
        }
    }

    Example5_3.java

    public class Example5_3 {
      public static void main(String args[]) {
         CheapGoods cheapGoods=new CheapGoods();
         //cheapGoods.weight=198.98; 是非法的,因为子类对象的weight已经是int型
         cheapGoods.newSetWeight(198);
         System.out.println("对象cheapGoods的weight的值是:"+cheapGoods.weight);
         System.out.println("cheapGoods用子类新增的优惠方法计算价格:"+
                             cheapGoods.newGetPrice());
         cheapGoods.oldSetWeight(198.987); //子类对象调用继承的方法操作隐藏的double型变量weight
         System.out.println("cheapGoods使用继承的方法(无优惠)计算价格:"+
                              cheapGoods.oldGetPrice());
      }  
    }

    子类对继承父类方法的重写

    University.java

    public class University {
        void enterRule(double math,double english,double chinese) {
            double total=math+english+chinese;
            if(total>=180) 
               System.out.println("考分"+total+"达到大学最低录取线");
            else
               System.out.println("考分"+total+"未达到大学最低录取线");
        }
    }

    ImportantUniversity.java

    public class ImportantUniversity extends University{
        void enterRule(double math,double english,double chinese) {
            double total=math+english+chinese;
            if(total>=220)  
               System.out.println("考分"+total+"达到重点大学录取线");
            else
               System.out.println("考分"+total+"未达到重点大学录取线");
        }
    }

    Example5_4.java

    public class Example5_4 {
        public static void main(String args[]) {
           double math=64,english=76.5,chinese=66;
           ImportantUniversity univer = new  ImportantUniversity();
           univer.enterRule(math,english,chinese); //调用重写的方法
           math=89;
           english=80;
           chinese=86;
           univer = new  ImportantUniversity();
           univer.enterRule(math,english,chinese); //调用重写的方法
        }
    }
  • 相关阅读:
    数据库 | 建表常用语句
    心得 | 撰写项目申报书
    工具 | 时间转化
    SpringBoot | 启动异常 | 显示bulid success 无 error信息
    120. 三角形最小路径和
    63. 不同路径 II
    SpringBoot | Velocity template
    SpringBoot | quartz | @DisallowConcurrentExecution
    SpringBoot | Hibernate @Transient 注解
    Java | 基础归纳 | 静态方法与实例方法的区别
  • 原文地址:https://www.cnblogs.com/yihujiu/p/5990576.html
Copyright © 2020-2023  润新知