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的值

  • 相关阅读:
    MySQl的绑定变量特性
    数数 / DP
    MODE
    题单
    对拍
    二、图论
    sync_with_stdio(false)的副作用
    九大编程语言
    Codeforces Round #575 (Div. 3) A B C
    Educational Codeforces Round 69 (Rated for Div. 2) A B C D
  • 原文地址:https://www.cnblogs.com/yonyong/p/8796222.html
Copyright © 2011-2022 走看看