gpt4 book ai didi

java - 关于Java文档及其实现的问题

转载 作者:行者123 更新时间:2023-12-02 01:45:15 26 4
gpt4 key购买 nike

我目前正在进行一项练习,要求我基于已完成的 HTML 文档表创建一个 Java 程序。例如,一个条目指出

reversedArray

public static Object[] reversedArray(Object[] array)

根据名称,我们可以假设该方法应以 array 的相反顺序返回一个数组。

现在我的问题不是如何创建所述数组,而是更多关于 Object[] 术语。这是什么意思?我应该通过使用特定数组类型(例如 String[]int[] ...)或字面上的 Object 重载来创建一堆方法吗[]

是后者,对象数组是如何工作的?根据名称,我认为它是一个可以保存对象的数组,但我不确定这在实践中意味着什么。

最佳答案

Object[] 基本上只是一个对象数组(最佳解释奖就在这里 ----> ☐ )

开玩笑吧,在Java中,任何对象都是从Object类派生的,所以基本上,这个数组可以存储任何类的任何对象。当您只想携带不同类的一个实例(或多个实例)时,它非常有用,但所述实例的类型并不重要。

假设您有多个不一定相关的类:

Class Dog {
String name;

public Dog(String name) {
this.name = name
}

public String toString() {
return "Hello! I am a dog called " + this.name;
}
}
<小时/>
Class Refrigerator {
public Refrigerator() {
}

public String toString() {
return "I am a refrigerator";
}
}

由于这两个类都是从 Object 隐式派生的,并且 Object 实现了 toString() 方法,因此您可以在两个类中重写该方法类声明。

然后您可以将这些的任何实例存储在 Object 中并调用方法 toString(),如下所示:

Dog myDog = new Dog("Spike");
Object anyObject = myDog;
System.out.println(anyObject.toString()); //would print the result of your "toString()" method in the Dog class :
//"Hello! I am a dog called Spike"


Refrigerator myFridge = new Refrigerator();
Object secondObject = myFridge;
System.out.println(secondObject.toString()); //would print the result of your "toString()" method in the Refrigerator class :
//"I am a refrigerator"

这允许您创建一个接受任何对象并同等对待它们并在参数中分配任何对象的方法:

public void printWhatYouAre(Object o) {
System.out.println(o.toString());
}

public void doingSomething() {
Dog myDog = new Dog("Spike");
Refrigerator myFridge = new Refrigerator();

printWhatYouAre(myDog);
printWhatYouAre(myFridge); //would print the same as above
}
<小时/>

在你的例子中,你的方法只需要重新排列一个数组,这意味着它甚至不需要 toString 方法,也不需要知道对象是什么。它只需要以不同的顺序将一个数组存储到另一个数组中。

<小时/>

Here是一本关于 Java 多态性的好读物,它基本上适用于任何语言,但使用的示例是用 Java 编写的。 The whole site实际上是一个很好的引用,所以值得一看,尤其是与你的帖子最相关的 OOP 部分。 ;)

关于java - 关于Java文档及其实现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769257/

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