方法一,定义一个类,不使用抽象
定义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());
}
}
然后getSimpleName就是返回当前类类名的