这是京东网银在线面试的时候问到的,之前一点没准备过关于设计的东西,所以当场让设计简单的正方形长方形就有点虚,说的几个方案貌似面试官都不是很满意,回来查了一下博客,发现这个问题的讨论还蛮多的,尤其是关于能不能用继承来设计,貌似还专门有人有了篇论文。
先说一下大部分人比较认可的一个方案吧,设计一个接口,求面积和周长两个方法,然后长方形和正方形各自实现这个接口。代码如下:
public interface Shape {
public double area();
public double perimeter();
}
public class Rectangle implements Shape {
private double width;
private double height;
public Rectangle(double width,double height){
this.width=width;
this.height=height;
}
@Override
public double area() {
return this.width*this.height;
}
@Override
public double perimeter() {
return 2*(this.width+this.height);
}
}
public class Square implements Shape {
private double side;
public Square(double side){
this.side=side;
}
@Override
public double