qq_56935938 2021-05-14 22:12 采纳率: 50%
浏览 19
已结题

为什么结果都是0呢?

public class shape
{
    static final double pi = 3.14;
    double length;
    double area;
    
    public double length(){
        return 0;
    }
    public double area(){
        return 0;
    }
}
 

public class circle extends shape{
    private double a;
    public circle(double r){
        a = r;
    }
    public double geta(){
        return a;
    }
    public void seta(double a){
        this.a = a;
    }
    @Override
    public double length(){
        return 2*pi*a;
    }    
    @Override
    public double area(){
        return pi*a*a;
    }
}
 

 

public class rectangle extends shape{
    private int m;
    private int n;
    
    public rectangle(int m,int n){
        this.m = m;
        this.n = n;
    }
    public int getm(){
        return m;
    }
    public void setm(int m){
        this.m = m;
    }
    public int getn(){
        return n;
    }
    public void setn(int n){
        this.n = n;
    }
    @Override
     public double length(){
         return 2*(m+n);     
     }
    @Override
     public double area(){
         return m*n;
     }
}
 

 

package shape;
import shape.shape;
import shape.circle;
import shape.rectangle;

import java.util.Scanner;

public class test {
    public static void main(String arg[]){
        shape[] shapes=new shape[2];
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入矩形的长和宽");
        int m=sc.nextInt();
        int n=sc.nextInt();
        shapes[0]=new rectangle(m,n);
        System.out.print("矩形的周长为:"+shapes[0].length);
        System.out.print("矩形的面积为:"+shapes[0].area);
        Scanner sd=new Scanner(System.in);
        System.out.println("请输入圆的半径");
        float r=sd.nextFloat();
        shapes[1]=new circle(r);
        System.out.print("圆的周长为:"+shapes[1].length);
        System.out.print("圆的面积为:"+shapes[1].area);
        
    }

}
 

结果:请输入矩形的长和宽
1
1
矩形的周长为:0.0矩形的面积为:0.0请输入圆的半径
1
圆的周长为:0.0圆的面积为:0.0

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2021-05-14 22:20
    关注

    你输出的length和area是基类的成员变量,你没有初始化,都是0.实际你想调用的是子类的length()和area()函数啊 

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月24日
  • 已采纳回答 11月16日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分