我已经在多个地方查询了“接口”功能,但是似乎没有地方真正解释使用它的好处,或者为什么我在编写自己的未来程序时应该使用接口。
我完成了下面的练习,在该练习中,我使用了一个名为“窗体”的接口来描述“圆周”和“区域”的方法。然后,我有3类“圆形”,“矩形”和“平方”,分别输入并计算每种形式的变量,最后计算出每种形式的周长和面积。
我的问题是,完成练习后,我很难真正理解实现此“表单”界面的意义。我觉得我本可以忽略使用接口,然后简单地通过继承,使每个类都继承圆周和面积方法,然后在编译时最后为每个表单创建对象?
该界面如何使我更轻松?
public class FormCompiling {
public static void main(String[] args) {
Form[] f = {new Circle(1.5), new Rectangle(2.0,3.0), new Square(2.5)};
System.out.println("Area:");
for(int i = 0 ; i<f.length; i++) {
System.out.println(f[i].area());
}
}
}
public interface Form {
public double circumference();
public double area();
}
public class Circle implements Form {
double radius = 0;
double area = 0;
double circumference = 0;
Circle(double radius) {
this.radius = radius;
}
@Override
public double circumference() {
circumference = 2 * radius * Math.PI;
return circumference;
}
@Override
public double area() {
area = radius * radius * Math.PI;
return area;
}
}
public class Rectangle implements Form {
double length = 0;
double width = 0;
double area = 0;
double circumference = 0;
Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
@Override
public double circumference() {
circumference = (2 * length) + (2 * width);
return circumference;
}
@Override
public double area() {
area = length * width;
return area;
}
}
public class Square extends Rectangle implements Form {
Square(double length) {
super(length, length);
this.length = length;
}
@Override
public double circumference() {
circumference = 4 * length;
return circumference;
}
@Override
public double area() {
area = length * length;
return area;
}
}
答案 0 :(得分:0)
是的,您可能有一个带有空方法的父类(或实现了其中的一些方法)..您会得到类似的结果。但是,如果忘记实现某些方法,则不会出现编译错误。
一个界面“强迫”您遵守某些合同;父类没有。 实际上,接口是合同。 决定执行的人必须执行合同。
答案 1 :(得分:0)
Java接口最大的用例是促进多态。多态性意味着让一个类的行为与其他多个类的行为相同。 Java不支持多重继承,因此您不能extend
多于一个类,但是可以implement
多个接口。有很多关于该主题的有用文档,这是oracle的官方文档,可以帮助您入门:https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html
接口还可以用作类/程序设计者与实现它的开发人员之间的“社会契约”。通过实现一个接口,您保证您的实现将遵循特定的行为。这样可以实现不同实现之间的一致性,这在尝试与一个大型项目中的许多开发人员进行协作时特别有用。