gpt4 book ai didi

java - 你好,我可以问一些关于java(Abstract,getter,setter)的问题吗?

转载 作者:行者123 更新时间:2023-12-02 09:21:26 25 4
gpt4 key购买 nike

我遇到了一些麻烦...我想获取“科学”和“ child ”类(class)的信息。但我的结果是这样的

科学书籍:title= nullISBN = nullPublisher= nullPrice= null、和年份= null

如何修复和显示信息?

首先,它是一个抽象类,名称为Book

String title;
String ISBN;
String publisher;
double price;
int year;

public String toString() {
return "title ="+title+" "+"ISBN ="+ISBN+" "+"Publisher= "+publisher+" "+"Price= "+price+" "+"Year= "+year+" ";
}


public String getTitle() {
return title;
}


public void setTitle(String title) {
this.title = title;
}

public String getIsbn() {
return ISBN;
}

public void setIsbn(String ISBN) {
this.ISBN = ISBN;
}

public String getPublisher() {
return publisher;
}

public void setPublisher(String publisher) {
this.publisher = publisher;
}

public int getYear() {
return year;
}

public void setYear(int year) {
this.year = year;
}

public void getBookInfo() {

}

public abstract double setPrice(double price);
class ScienceBook extends Book {    

public double setPrice(double price){

return price*0.1;
}

public void setBookInfo() {

title = "sbook1";
ISBN = "123456";
publisher = "pub2";
year = 2017;
price = 10;

}
}
class ChildrenBook extends Book{

public double setPrice(double price) {

return 20;
}

public void setBookInfo() {

title = "cbook1";
ISBN = "12345";
publisher = "pub1";
year = 2016;
price = 20;
}
}

程序将从这里开始执行,

public class Midtermtest {

public static void main(String[] args) {

ScienceBook scb1 = new ScienceBook();
ScienceBook scb2 = new ScienceBook();
ChildrenBook chb = new ChildrenBook();


System.out.println("Here is the book information: ");

System.out.println("Science Book: "+scb1.toString());
System.out.println("Children Book: "+scb2.toString());
System.out.println("Childern Book: "+chb.toString());
}
}

预期输出:

Science Book: title= () ISBN = () Publisher= () Price= () Year= ()

Children Book1 ~~

Children Book2 ~~

() << they are information

最佳答案

您的代码有几个问题:

  1. 您从未为您的图书设置任何信息。
    您有方法来执行此操作 setBookInfo,但您从未在代码中调用它们,因此它们永远不会运行。

默认情况下,如果您没有显式初始化 Java 中的所有成员变量(不是基元),它们都会设置为 null

  • 您的 setPrice 函数不会设置价格。
    它返回一些整数值,但不会更改对象的 price 成员字段。

  • setPrice 中,参数名称 price 与实例成员 price 相同。
    这将导致所谓的“遮蔽”:如果您在该函数中编写 price = 20 ,您将更改参数(仅在该函数中本地),而不是 private int Price 成员。
    要访问成员变量,您必须使用 this.price 专门对其进行寻址,或者仅更改参数名称。

  • 如果您不使用 price 参数,为什么 setPrice 会使用它?
    您不应该定义不需要的参数。使用它或删除它。
    这对于家庭作业尤其重要,因为它会降低你的成绩!

  • 关于java - 你好,我可以问一些关于java(Abstract,getter,setter)的问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58668383/

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