gpt4 book ai didi

java - 接口(interface)名称可以是返回类型吗?

转载 作者:行者123 更新时间:2023-12-01 16:52:33 25 4
gpt4 key购买 nike

public interface Shape {
void draw();
}



class Square implements Shape {

public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}


class ShapeFactory {

//use getShape method to get object of type shape
public Shape getShape(String shapeType){
if(shapeType == null){
return null;
}




else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}

return null;
}
}

public class FactoryPatternDemo {

public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();

//get an object of Square and call its draw method.
Shape shape1 = shapeFactory.getShape("Square");

//call draw method of square
shape1.draw();


}
}

这段代码是我在学习设计模式时得到的,在这段代码中,getShape方法的返回类型是Shape(一个接口(interface)) .

那么接口(interface)类型可以设置为另一个方法的返回类型吗?

最佳答案

这实际上是一个很好的实践,因为您正在为接口(interface)而不是类进行编程,这隐藏了实现的细节并使您的代码更容易维护。想象一下:您有一个接口(interface) X、两个实现它的类(A 和 B)以及另一个具有名为 foo() 的方法的类 (C)。由于类 A 和 B 都实现了 X,因此 foo() 的返回值可以是 X,这允许您同时返回 A 或 B 对象。在 Java 中,当您有一个实现接口(interface)的类时,该类的实例也是该接口(interface)的实例,这就是您可以使用接口(interface)作为返回类型的原因。

为了测试我所说的,您可以创建一个名为 MyInterface 的接口(interface)和一个实现 MyInterface 的类 TestClass。如果您创建一个 TestClass 实例(假设为“myClass”),如果您编译并运行此代码,您可以检查它:

  if (myClass instanceof MyInterface) {
System.out.println("Hey, I'm an instance of MyInterface!");
}

关于java - 接口(interface)名称可以是返回类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37088435/

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