问题
在这次练习中遇到一些问题:关于子类中书写出一些问题(我在子类写一个构造器不知道为什么编译器一直在报错),虽然我在最后写出了正确的代码,但我仍然没有解决这个问题,只是通过子类的super()的方式,在Rectangle中新加了一个构造器如下解决问题.
public class Square extends Rectangle {
public Square(double side) {
super(side);
// TODO Auto-generated constructor stub
}
}
public Rectangle(double side) { //Rectangle中新加了一个构造器
this.length=side;
this.width=side;
}
所得
eclipse快捷键 选中代码注释: 选中 Ctrl+/
输出语句:syso alt+/
类的源码:Ctrl+左
生成构造器: 右 Source gcuf
…
感觉想法和实操差距好大:想的时候觉得很简单,实操起来困难重重
毕竟第一次发CSDN博客,也同时学习csdn-markdown编辑器
uml图
代码
Shape.Java
public interface Shape {
public double GetArea();
public double GetPerim();
}
Rectangle.java
public class Rectangle implements Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
super();
this.length = length;
this.width = width;
}
public Rectangle(double side) {
this.length=side;
this.width=side;
}
public double GetArea() {
// TODO Auto-generated method stub
return length*width;
}
public double GetPerim() {
// TODO Auto-generated method stub
return (length+width)*2;
}
}
Circle.java
public class Circle implements Shape {
private double R;
public Circle(double r) {
super();
R = r;
}
@Override
public double GetArea() {
// TODO Auto-generated method stub
return Math.PI*R*R;
}
@Override
public double GetPerim() {
// TODO Auto-generated method stub
return Math.PI*2*R;
}
}
Test.java
import java.util.Scanner;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
System.out.println("输入边:");//正方形
double side=scanner.nextDouble();
Square square=new Square(side);
System.out.println("长方形面积为"+square.GetArea());
System.out.println("长方形周长为"+square.GetPerim());
System.out.println("输入长:");//长方形
double length=scanner.nextDouble();
System.out.println("输入宽:");
double width=scanner.nextDouble();
Rectangle rectangle=new Rectangle(length,width);
System.out.println("长方形面积为"+rectangle.GetArea());
System.out.println("长方形周长为"+rectangle.GetPerim());
System.out.println("输入半经:");//圆
double R=scanner.nextDouble();
Circle circle=new Circle(R);
System.out.println("圆面积为"+circle.GetArea());
System.out.println("圆周长为"+circle.GetPerim());
// Rectangle rectangle=new Rectangle(5,5);
// System.out.println("长方形面积为"+rectangle.GetArea());
// System.out.println("长方形周长为"+rectangle.GetPerim());
// Circle circle=new Circle(2);
// System.out.println("圆面积为"+circle.GetArea());
// System.out.println("圆周长为"+circle.GetPerim());
}
}
Square.java
public class Square extends Rectangle {
public Square(double side) {
super(side);
// TODO Auto-generated constructor stub
}
}