Laity(俗人)! 2021-11-18 22:08 采纳率: 0%
浏览 64
已结题

子类继承父类为什么还需要get方法,而不能直接用变量?

在父类Base中定义了计算方法calculate(),该方法用于计算两个数的乘积(X*Y)。请在子类Sub中重写该方法,将计算逻辑由乘法改为除法(X/Y)。注意,当分母为0时输出“Error”。
正确代码
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            Sub sub = new Sub(x, y);
            sub.calculate();
        }
    }
 
}
 
class Base {
 
    private int x;
    private int y;
 
    public Base(int x, int y) {
        this.x = x;
        this.y = y;
    }
 
    public int getX() {
        return x;
    }
 
    public int getY() {
        return y;
    }
 
    public void calculate() {
        System.out.println(getX() * getY());
    }
 
}
 
 class Sub extends Base {
        public Sub(int x, int y) {
            super(x, y);
        }
 
        @Override
        public void calculate() {
            if(getY()==0){
                System.out.println("Error");
            }else{
                System.out.println(getX() /getY());
            }
        }
        //write your code here......
 
    }

我的代码在Sub处为什么不能直接用x跟y,而是需要getX()
class Sub extends Base {
     //private 不能被继承
    //write your code here......
    private int x;
    private int y;
    public Sub(int x ,int y){
       super(x,y);
    }
    
    public void calculate(){
         if(y==0) System.out.print("Error");
        else System.out.print(x/y);
    }
    

}

  • 写回答

1条回答 默认 最新

  • CSDN专家-文盲老顾 2021-11-19 08:57
    关注
    
    class Sub extends Base {
         //private 不能被继承
        //write your code here......
        private int x;  // 私有变量 x
        private int y;
        public Sub(int x ,int y){
           super(x,y);   // 在实例化时,未将变量保存至私有变量中
        }
        
        public void calculate(){
             if(y==0) System.out.print("Error");
            else System.out.print(x/y); // 此处使用的是当前类的私有变量,而不是基类中的私有变量
        }
        
     
    }
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月19日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示