Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java使用println方法打印继承的对象_Java_Inheritance - Fatal编程技术网

Java使用println方法打印继承的对象

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

我正在从python向java迈出这些第一步,这里是我的许多java问题中的第一个

当通过缩短的print方法打印时,我遇到了继承类返回值的问题。我相信Java的一些简单的东西我还不知道。我还尝试将println方法接收到的任何整数转换为带有.tostring()的字符串,但我不确定这是否正确

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())

因此,当您打印ln
b_class
时,它将打印:
继承$B@74a14482

对于
println(objectline)
它正在接收引用类型(Object)到println,但是作为
multiply
方法,它是返回a原语类型(int),它不是一个对象,您需要将它转换为
println
方法的对象,正如@StanteyS的回答,使用
Integer。toString
可以将
int
转换为
String


对于Java
toString
方法,它将默认

返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

getClass().getName()+'@'+Integer.toHexString(hashCode())

因此,当您打印ln
b_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中的工作原理基本相同。您没有对
乘法
返回值执行任何操作。