Java使用println方法打印继承的对象
我正在从python向java迈出这些第一步,这里是我的许多java问题中的第一个 当通过缩短的print方法打印时,我遇到了继承类返回值的问题。我相信Java的一些简单的东西我还不知道。我还尝试将println方法接收到的任何整数转换为带有.tostring()的字符串,但我不确定这是否正确Java使用println方法打印继承的对象,java,inheritance,Java,Inheritance,我正在从python向java迈出这些第一步,这里是我的许多java问题中的第一个 当通过缩短的print方法打印时,我遇到了继承类返回值的问题。我相信Java的一些简单的东西我还不知道。我还尝试将println方法接收到的任何整数转换为带有.tostring()的字符串,但我不确定这是否正确 class Inheritance { private static void println (Object line){ System.out.println(line.to
class Inheritance {
private static void println (Object line){
System.out.println(line.toString());
}
static class A {
public int multiply(int a, int b){
int val = a*b;
return val;
}
}
static class B extends A {
public int multiply(int a, int b) {
int val = a * b * 5;
return val;
}
}
public static void main(String[] args) {
B b_class = new B();
b_class.multiply(3,4);
println(b_class);
println("Hello World");
}
}
结果如下:
Inheritance$B@74a14482
Hello World
对于Java
toString
方法,它将默认
返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:
getClass().getName()+'@'+Integer.toHexString(hashCode())
因此,当您打印lnb_class
时,它将打印:继承$B@74a14482
对于println(objectline)
它正在接收引用类型(Object)到println,但是作为multiply
方法,它是返回a原语类型(int),它不是一个对象,您需要将它转换为println
方法的对象,正如@StanteyS的回答,使用Integer。toString
可以将int
转换为String
对于Java
toString
方法,它将默认
返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:
getClass().getName()+'@'+Integer.toHexString(hashCode())
因此,当您打印lnb_class
时,它将打印:继承$B@74a14482
对于println(objectline)
它正在接收引用类型(Object)到println,但是作为multiply
方法,它是返回a原语类型(int),它不是一个对象,您需要将它转换为println
方法的对象,正如@StanteyS的回答,使用Integer。toString
可以将int
转换为String
您只需使用
println
public static void main(String[] args) {
B b_class = new B();
println(Integer.ToString(b_class.multiply(3,4)));
println("Hello World");
}
您只需在
println
public static void main(String[] args) {
B b_class = new B();
println(Integer.ToString(b_class.multiply(3,4)));
println("Hello World");
}
执行
println(b_类)时
隐式调用同一类的toString
方法,该方法继承自Object
类
您需要重写toString
方法以显示正确的输出
static class B extends A {
int val=0;
public int multiply(int a, int b) {
val = a * b * 5;
return val;
}
public String toString(){
return String.valueOf(val);
}
}
现在,
println(b_类)代码>将按照您的期望工作。当您执行println(b_类)时
隐式调用同一类的toString
方法,该方法继承自Object
类
您需要重写toString
方法以显示正确的输出
static class B extends A {
int val=0;
public int multiply(int a, int b) {
val = a * b * 5;
return val;
}
public String toString(){
return String.valueOf(val);
}
}
现在,println(b_类)代码>将按照您的期望工作。尝试println(b_class.multiply(3,4))
这在Python中的工作原理基本相同。您没有对multiply
返回值执行任何操作。请尝试println(b_class.multiply(3,4))
这在Python中的工作原理基本相同。您没有对乘法
返回值执行任何操作。