当前位置: 首页 > 知识库问答 >
问题:

Java对象作为输入参数的抽象方法

东郭海阳
2023-03-14

我可以让这段代码在没有对象作为抽象方法输入参数的情况下工作。例如,如果我亲自将printInformation()方法的输入参数设置为printInformation(int x),emp就会起作用。

当我将输入参数作为printInformation()方法的对象时,它抛出了一个错误

emp不是抽象的,并且不会覆盖person类emp extends person{^

abstract class person{
 abstract void printInformation(person p);
}

class emp extends person{
 emp(){
  System.out.println("This is a emp constructor");
 }
 void printInformation(emp e){
  System.out.println("This is an emp");
 }
}

class entity{
 public static void main(String args[]){
  emp employeeObject = new emp();
  employeeObject.printInformation(employeeObject);
 }
}

共有2个答案

杜俊逸
2023-03-14

我会这样做:

interface PrintsInformation<T> {
    void printInformation( T t );
}

class Emp implements PrintsInformation<Emp> {
    public void printInformation( Emp e ) {
        System.out.println( "This is an emp" );
    }
}

public static void main( String[] args ) {
    Emp employeeObject = new Emp();
    employeeObject.printInformation( employeeObject ); // compiles
}

解决问题的另一种方法是,如果对象本身正在打印,则不要传入该对象
就这么做:

    public void printInformation() {
        // print "this" object, rather than the one passed in
        System.out.println( "This is an emp" );
    }
蓟雪峰
2023-03-14

您的界面具有如下定义的功能:

void printInformation(person p);

您的类有这样定义的函数:

void printInformation(emp e);

这些功能并不相同。Java认为第二种方法是一种新的重载方法,而不是接口方法的实现。由于类emp未声明为抽象,但未提供抽象方法void printInformation(person)的实现,因此它是错误的。

 类似资料:
  • 问题内容: 我想知道是否有任何方法可以执行以下操作。我有一个抽象类,及其所有不同的子类,我想覆盖clone方法。我要在方法中做的就是从当前方法中创建一个新方法。显然,由于抽象,我无法执行以下操作。还有另一种方法可以执行此操作,因为仅为了简单的名称更改而在每个子类中覆盖克隆似乎没有用。 问题答案: 您可以尝试使用反射: } 在clone()方法中,调用getClass()。因为ACloneble i

  • 我已经设置了ModelAndView对象 然后,我在JSP中导入了其他助手 然后我尝试使用文档字段作为如下参数 IDEA告诉我那个文件没有解决 堆栈跟踪 在jsp文件中的[44]行发生错误:[/WEB-INF/view/jsp/admin/document_card.jsp]document.pub_date无法解析为类型41: РћРїСѓР±Р"икование 42: 43:

  • 问题内容: 我想编写一个抽象方法,但编译器始终显示此错误: 抽象方法不能有主体 我有这样的方法: 怎么了 问题答案: 抽象方法意味着没有默认实现,并且实现类将提供详细信息。 本质上,您将拥有 因此,它与错误状态完全相同:您的抽象方法不能具有主体。 在Oracle网站上有完整的教程,网址为:http : //download.oracle.com/javase/tutorial/java/IandI

  • 想象一下,我有一个抽象类动物的方法: 然后我有一个类,用以下内容扩展这个抽象类: 我希望每个扩展Animal的类都有一个fetch()方法。然而,fetch方法为相关动物指定了一些独特的特征(狗的爪子、猫的爪子等)。例如,cat的fetch()将获取参数fetch(fellinecat kitty)并表示: 因此,抓取方法接受了扩展抽象类“动物”(因此是动物)的参数。我在“动物”中定义了抓取()方

  • 问题内容: 我是一名 Java 开发人员,对Object Orientation概念有很好的了解( 或者也许我这样认为 )。现在我正在学习设计模式(从头开始设计模式)。我一直在阅读有关OOPS概念抽象的文章,以简要地理解它,而阅读更多有关它的内容,使我比以前更加困惑。 据我了解,抽象是指隐藏程序的内部细节,同时将接口暴露给其他程序员,而无需担心内部细节。但是我不明白 抽象类如何适应这种抽象概念,其

  • 我正在尝试发布来自邮递员的 POST 请求,但正文中的 json 未转换为控制器中的 java 对象。 pom.xml 在我看到的日志中 Hibernate:插入到用户(zip,address1,address2,address3,城市,电子邮件,first_name,last_name,密码,状态,user_name)值 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 不知道