java定义类实现几何面积的计算

方法一,定义一个类,不使用抽象
定义graph图形类,然后在主调函数里使用


public  class graph {
	    //封装
	   String name;//图形的名称
	   double r=4;//圆的半径
	   int length=4,width=3;//长方形的长和宽,正方形也一样
	   public String  IsName(String name)
	   {
		   this.name=name;
		return name;
	   }
	   public  double Area(double r)
	   {
		   return Math.PI*Math.pow(r, 2);
	   }
	   public  int Area(int length,int width)
	   {
		   return  length*width;
	   }
}

import java.util.Scanner;

public class Calculate {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
        graph graph1=new graph();
        System.out.println("请输入图形的名称 圆或者矩形");
        String Name;
        double r=graph1.r;
        int l=graph1.length,w=graph1.width;
        Scanner sc=new Scanner(System.in);
        Name=sc.next();
        
        graph1.IsName("Name");
        if(Name.equals("圆"))
        {
        	System.out.println();
        	System.out.println(Name+"的半径为"+graph1.r);
        	System.out.println(Name+"的面积为"+graph1.Area(r));
        }
        else
        {
        	System.out.println();
        	System.out.println(Name+"的长宽为"+graph1.length+","+graph1.width);
        	System.out.println(Name+"的面积为"+graph1.Area(l,w));
        }
	}

}

方法二:定义一个抽象类,然后在用圆和矩形来继承最后在主调函数里去调用
因为抽象类可以不用具体实例化只是简单的声明一下即可
父类(超类)

package com.mrsoft;

public abstract class Shape {
    public String getName() {
        return this.getClass().getSimpleName();
    }
    
    public abstract double getArea();
}

子类

package com.mrsoft;

public class Circle extends Shape {
    
    private double radius;
    
    public Circle(double radius) {
        this.radius = radius;
    }
    
    @Override
    public double getArea() {
        
        return Math.PI * Math.pow(radius, 2);
    }
    
}

package com.mrsoft;

public class Rectangle extends Shape {
    
    private double length;
    private double width;
    
    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }
    
    @Override
    public double getArea() {
        return length * width;
    }
    
}

主类

package com.mrsoft;

public class Test {
    public static void main(String[] args) {
        Circle circle = new Circle(1);
        System.out.println("图形的名称是:" + circle.getName());
        System.out.println("图形的面积是:" + circle.getArea());
        Rectangle rectangle = new Rectangle(1, 1);
        System.out.println("图形的名称是:" + rectangle.getName());
        System.out.println("图形的面积是:" + rectangle.getArea());
    }
}

有关getClass的使用请看这篇
https://blog.youkuaiyun.com/expect521/article/details/79139829?ops_request_misc=&request_id=&biz_id=102&utm_term=getClass&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-79139829

然后getSimpleName就是返回当前类类名的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨里的无聊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值