gpt4 book ai didi

java - 从抽象类 toString 方法扩展的类不起作用 :/

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:07 25 4
gpt4 key购买 nike

这是主要的演示类

public class Ongoing{

public static void main(String[] args){

ExtendsAbstract josh = new ExtendsAbstract(5, "donkey");

System.out.println(josh.toString());



}

}

这是从抽象类扩展出来的类,那个tostring方法不行。

public class ExtendsAbstract extends Abstract{

private String t;

public ExtendsAbstract(int y, String t){
super(y);
this.t = t;
}

public String getString(){
return this.t;
}

public int getInt(){
return super.getInt();
}

public String toString(int y){

return(/*super.toString(y)+*/"The integer is "+ y) ;

}

}

这是抽象类

public abstract class Abstract{

private int y;


public Abstract(int y){
this.y = y;
}

public int getInt(){
return y;
}

public String toString(int y){
return("The integer is :"+y);
}


}

每次我尝试从扩展类访问 toString 方法时,它只会打印出我认为是内存地址的内容。我什至没有弄乱抽象类,它仍然这样做,有人知道为什么吗?还有一个关于抽象类的问题,它们带来了什么好处,是不是只是内存?因为你不能从它访问私有(private)成员所以它不是和普通类一样,只是更多的限制吗?

最佳答案

假设你有类 DadSon 定义如下

public class OverLoadedToString {

public static void main(String[] args) {
Son son = new Son();
son.test();
son.test(90);
}
}

class Dad {

void test() {
System.out.println("Dad - test");
}
}

class Son extends Dad {

void test(int testTime) {
System.out.println("Son - test1" + testTime);
}
}

Son 类正在扩展 Dad 因此没有参数的 test() 继承给 Son,就像你的 ExtendsAbstract 类有 toString() 没有参数继承自 Object 类(Java 中的每个类都继承 Object 类)。

然后在 Son 类中我添加了新方法 test(int testTime),它有一个参数,使 test()test(int testTime ) 不同的是调用方法重载。在您的 ExtendsAbstract 类中,有两个 toString 方法,一个是继承的无参数方法,另一个是您定义的。

现在让我向您展示继承流程

Object--->Abstract--->ExtendsAbstract

对象类toString()方法打印内存地址,我们可以在我们的类中覆盖它来改变它的定义,你可以返回任何你想要的字符串。但是您没有在 Abstract 类或 ExtendsAbstract 类中的任何地方覆盖它,因此在这两个类中它都会打印内存地址。

现在,在您的 Ongoing 类中,您正在调用对象类 toString() 方法,该方法始终打印内存地址。你的困惑是你认为你已经覆盖了 toString() 方法,但实际上你只是重载了它并且你正在为你的预期输出调用错误的方法。

引用:Java overloading and overriding

关于java - 从抽象类 toString 方法扩展的类不起作用 :/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53201313/

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