第一步: 定义父类:Shape
package com.xjc;
/*1,定义一个图形(Shape)类作为诸如三角形▲、菱形◆、矩形▋等图形的父类,在该父类中定义calcPerimeter()抽象方法,该方法用于计算图形的周长(Shape是抽象类)。
2,定义两个子类,重写父类的calcPerimeter()方法。*/
public abstract class Shape {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
// 用abstract关键字定义一个抽象类calcPerimeter 抽象类是没有方法体的,所以没有{}
public abstract double calcPerimeter();
}
第二步: 定义第一个子类:Circle
package com.xjc;
/*1,定义一个图形(Shape)类作为诸如三角形▲、菱形◆、矩形▋等图形的父类,在该父类中定义calcPerimeter()抽象方法,该方法用于计算图形的周长(Shape是抽象类)。
2,定义两个子类,重写父类的calcPerimeter()方法。*/
public class Circle extends Shape {
private double r;
public Circle() {
super();
}
public Circle(Double r) {
super();
this.r = r;
}
public double getR() {
return r;
}
public void setR(Double r) {
this.r = r;
}
//重写父类shape中的calcPerimeter方法 子类和父类中的同名同参同返回值的方法,这叫方法重写
@Override
public double calcPerimeter() {
// TODO Auto-generated method stub
return 2 * r * Math.PI;
}
}
第三步: 定义第二个子类:Rectangle
package com.xjc;
/*1,定义一个图形(Shape)类作为诸如三角形▲、菱形◆、矩形▋等图形的父类,在该父类中定义calcPerimeter()抽象方法,该方法用于计算图形的周长(Shape是抽象类)。
2,定义两个子类,重写父类的calcPerimeter()方法。*/
public class Rectangle extends Shape {
private double c;
private double k;
public Rectangle() {
super();
}
public Rectangle(Double c, Double k) {
super();
this.c = c;
this.k = k;
}
public double getC() {
return c;
}
public void setC(Double c) {
this.c = c;
}
public double getK() {
return k;
}
public void setK(Double k) {
this.k = k;
}
//重写父类shape中的calcPerimeter方法 子类和父类中的同名同参同返回值的方法,这叫方法重写
@Override
public double calcPerimeter() {
// TODO Auto-generated method stub
return (c + k) * 2;
}
}
第三步: 定义测试类:Shapetext
package com.xjc;
import java.util.Scanner;
/*1,定义一个图形(Shape)类作为诸如三角形▲、菱形◆、矩形▋等图形的父类,在该父类中定义calcPerimeter()抽象方法,该方法用于计算图形的周长(Shape是抽象类)。
2,定义两个子类,重写父类的calcPerimeter()方法。*/
public class Shapetext {
public static void main(String[] args) {
Scanner inputScanner = new Scanner(System.in);
System.out.println("请输入圆的半径:");
double r = inputScanner.nextDouble();
// 通过有参构造方法给对象yuan的属性赋值
Circle yuan = new Circle(r);
System.out.println("请输入矩形的长和宽(两者间用一个空格隔开):");
double c = inputScanner.nextDouble();
double k = inputScanner.nextDouble();
// 通过有参构造方法给对象juxing的属性赋值
Rectangle juXing = new Rectangle(c, k);
// 调用两个对象的方法并输出返回值
System.out.println(yuan.calcPerimeter());
System.out.println(juXing.calcPerimeter());
}
}