gpt4 book ai didi

java - 如何使用不在接口(interface)接口(interface)中的方法 i = new class();

转载 作者:行者123 更新时间:2023-11-29 04:54:38 24 4
gpt4 key购买 nike

我只能访问接口(interface) Measurable 中的 m1/m2 的方法/变量,如何访问其他方法和变量?

如何在 getArea() 方法中使用 m1/m2 对象的 getLength() 和 getBreadth()/getRadius() 方法?提前致谢!

public class Main {

public static void main(String[] args) {

Circle c = new Circle(10);
Rectangle r = new Rectangle(10,5);

addArea(c, r);

Measurable Rec = new Rectangle(10, 5);
Measurable Cir = new Circle(10);

addArea(Rec, Cir);
}

public static void addArea(Measurable m1, Measurable m2){
String m1s = null,m2s = null;

if(m1 instanceof Rectangle){
m1s="Rectangle";
}
else if(m1 instanceof Circle){
m1s="Circle";
}

if(m2 instanceof Circle){
m2s="Circle";
}
else if(m2 instanceof Rectangle){
m2s="Rectangle";
}

System.out.println("Area of "+m1s+" and "+m2s+" is "+(m1.getArea()+m2.getArea())+"\n");
}

}

interface Measurable{
double PI = 3.14;
public double getPerimeter();
public double getArea();
}

class Rectangle implements Measurable{

public double breadth, length;

public Rectangle(int breadth, int length){
this.breadth = breadth;
this.length = length;
}

@Override
public double getPerimeter() {
return 2*(breadth+length);
}

@Override
public double getArea() {
return length*breadth;
}

public double getLength(){
return length;
}

public double getBreadth(){
return breadth;
}

}

class Circle implements Measurable{

public double radius;

public Circle(int radius){
this.radius = radius;
}

@Override
public double getPerimeter() {
return 2*PI*radius;
}

@Override
public double getArea() {
return PI*radius*radius;
}

public double getRadius(){
return radius;
}

}

最佳答案

您应该转换您的对象,在您的 if block 中执行此操作并将值分配给 String 对象。接口(interface)的引用不能调用在一个实现它的类中编写的方法。


解决方案

例如 getLength()m1

String m1Length = null;
if(m1 instanceof Rectangle){
m1s="Rectangle";
m1Length = ((Rectangle)m1).getLength());
}
else if(m1 instanceof Circle){
m1s="Circle";
m1Length = ((Circle)m1).getLength());
}

将此逻辑应用于其余代码,您会没事的。

关于java - 如何使用不在接口(interface)接口(interface)中的方法 i = new class();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34240693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com