zoukankan      html  css  js  c++  java
  • 关于toString的自动调用

     1 class a{
     2 
     3 }
     4 
     5 class b extends a{
     6 
     7    String rr = "zzz";
     8 
     9    public String toString(){
    10 
    11            return "aa";
    12 
    13      }
    14 
    15 }
    16 
    17 public class A6{
    18 
    19        public static void main(String[] args){
    20 
    21                     b i = new b();
    22 
    23                    System.out.println(i);
    24 
    25        }
    26 
    27 }

    输出结果是 aa。为什么会默认调用toString方法

    System.out.println(i); 改为System.out.println(i.rr);结果为zzz。为什么不会调用toString方法。

     

    1、这里面System.out.println(i)调用b里面定义的toString();因为输出字符串是调用toString()方法,如果子类没有定义toString()方法则会调用父类的,如果父类没有定义则最终会调用超级父类的ObjecttoString()方法,然后rrb类定义的一个属性,其对象为String,就会调用String里面的toString()方法,所有System.out.println(i.rr);其实是调用了String里面的toString()方法

    2toString()java中的一个内置方法,很多object都支持toString这个方法。

    而如果你在类里编写了toString,相当于覆盖了类中原有的toString

    System.out.print中会自动调用。

    3、将System.out.println(i); 默认调用toString System.out.println(i.rr);的意思是输入b类的rr的属性。

    4、因为类b继承了类a,而类a重写了toString()方法,system.out.printi)默认调用了i.toString(),所以输出了aai.rr则是输出i对象的属性rr的值

  • 相关阅读:
    libevent 源码学习四 —— 源代码文件组织
    c++上待解决的内容
    常用网址
    tin mission 2021 11 14
    问题--c++
    小思维--c++
    thin mission 2021 11 13
    physics--lecture--Centre of Gravity & Inertia and conservation of angular momentum
    physics--lecture--torque--static equilibrium
    physics—lecture ——torque
  • 原文地址:https://www.cnblogs.com/yonyong/p/8796222.html
Copyright © 2011-2022 走看看