gpt4 book ai didi

Java调用数组中类对象的方法

转载 作者:行者123 更新时间:2023-12-01 22:26:04 25 4
gpt4 key购买 nike

我有一个像这样的类(class):

public abstract class Book {

public abstract double retailPrice();

private String title, author, ISBN;
private double price;

public Book() {
title = "";
author = "";
ISBN = "";
price = 0.00;
}
public Book(String title, String author, String ISBN, double price) {
this.title = title;
this.author = author;
this.ISBN = ISBN;
this.price = price;
}
public String getTitle() {
return title;
}

在数组中使用 Textbook 类的对象(如下所示):

public class Textbook extends Book {

private String course;

@Override
public double retailPrice() {
return super.getPrice() + (super.getPrice() * .10);
}
public Textbook() {
course = "";
}
public Textbook(String course) {
this.course = course;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
}

我的数组充满了以下对象:

Book[] books = new Book[100];
books[i] = new Textbook(courseName);

当我使用 books[i]. 调用数组时,唯一可用的方法是 Textbook 继承类 (Book) 的 getTitle()

所以我的问题是,如何访问 Textbook 类的 getCourse() 函数?

最佳答案

如果 books 数组的所有元素都是 Textbook 实例,则可以将该数组声明为 Textbook books[] 类型> 而不是 Book[]。否则,您需要进行强制转换,并且为了安全起见,您需要测试图书类型:

String course = null;
if (books[i] instanceof Textbook) {
course = ((Textbook) books[i]).getCourse();
}

一种变体是跳过 instanceof 测试,而是将代码包装在 try/catch 语句中,以捕获可能出现的任何 ClassCastException抛出。当然,如果您通过其他逻辑知道 books[i] 必须是 Textbook 的实例,您可以安全地避开类型检查和 try/catch block 。

关于Java调用数组中类对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28773176/

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