【问题标题】:constructor Book in class Book cannot be applied to given types;Book 类中的构造函数 Book 不能应用于给定类型;
【发布时间】:2016-08-19 19:28:55
【问题描述】:

主要

Book new_novel=new MyBook(title,author,p);

抽象类:

abstract class Book 
{

    Book(String t,String a){
       title=t;
       author=a;
    }
}

继承类:

class MyBook extends Book{

    MyBook(String t,String a,int p){
        t= super.title;
        a = super.author;
        price = p;
    }         

}

【问题讨论】:

  • 请通过help section 了解如何在这里询问以及询问什么。从您的代码来看,您似乎才刚刚开始使用 Java 和面向对象编程的旅程 - 请阅读一些教程。会有很长的路要走。
  • 是的,但这只是一个参考。对象是 MyBook 类型。 @编码器
  • 看来你是对的。而且你在 Book 类中没有字段 title 和 author 所以你如何在构造函数中使用它们???
  • 您的代码根本无效,无效。您缺少字段,无法在 java 中调用 super.<field>
  • 仅供参考,id 调用 super(title,author);在 MyBook 构造函数中,而不是直接设置值。

标签: java abstract superclass


【解决方案1】:

正如用户 ppeterka 在 cmets 中建议的那样,一些 Java 教程会让您感到惊奇。这是一个很好的起点:https://docs.oracle.com/javase/tutorial/

不过,这里有一点帮助:

您需要在BookMyBook 中定义字段。 例如:

public class Book {

    private String title;
    private String author;
    ...
}

关于构造函数,由于MyBook扩展了BookMyBook的构造函数可以这样调用Book的构造函数:

MyBook(String t,String a,int p){
    super(t, a); // Calls Book(title, author)
    price = p;
}

顺便说一句,用户编码员的声明

你不能定义 Book 类型的对象,因为 Book 是抽象的

是假的。假设您已经定义了 title authorp,那么您的代码 Book new_novel=new MyBook(title,author,p); 是非常好的代码行。

希望你喜欢学习 Java!

【讨论】:

  • 首先感谢您的解释,我现在明白了。当然,虽然我来自 C 背景,但我很喜欢 java,而且我在没有 C++ 知识的情况下直接开始了 java,所以这对我来说比较棘手,但现在我通过做一些这类代码感到很自在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 2020-06-21
  • 1970-01-01
相关资源
最近更新 更多