我可以创建一个接口对象并在不覆盖它的情况下访问实现该接口的 java 文件的功能吗?
Posted
技术标签:
【中文标题】我可以创建一个接口对象并在不覆盖它的情况下访问实现该接口的 java 文件的功能吗?【英文标题】:Can i create an interface object and reach to the function of the java file that implements the interface without overriding it? 【发布时间】:2018-04-18 09:40:47 【问题描述】://接口类
public interface Square
public void printHeight();
public void printWidth();
//实现接口类的java类
public class Square1 implements Square
public void printHeight()
System.out.println("height");
public void printWidth()
System.out.println("width");
//将创建对象接口而不覆盖方法的操作类 公共类测试扩展了 someabstractclass
private Square perfectSquare;
@Override
public void print()
perfectSquare.printHeight();
当运行这个 perfectSquare.printHeight() 时,它能够在控制台中显示
height
它是如何工作的?
【问题讨论】:
就目前而言,这段代码甚至无法编译。 1. printHeight 和 printSquare 返回类型错误。 2.public void printWidth
不是有效的java代码,你缺少()
谢谢@OHGODSPIDERS。我已经编辑了我犯的愚蠢错误。
【参考方案1】:
这个声明定义了一个接口类型的变量(Square
):
private Square perfectSquare;
该变量可以包含对实现Square
接口的类(例如您的Square1
类)对象的引用。
因此,您可以在该变量上调用Square
接口的方法(例如perfectSquare.printHeight()
)。
当然,这假设您在使用变量之前对其进行了初始化。否则,您将在运行时收到 NullPointerException
。
鉴于您声称获得的“高度”输出,您可能为 perfectSquare
变量分配了 Square1
类的对象(在某些代码中您未包含在问题中)。
【讨论】:
以上是关于我可以创建一个接口对象并在不覆盖它的情况下访问实现该接口的 java 文件的功能吗?的主要内容,如果未能解决你的问题,请参考以下文章