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

  • 相关阅读:
    Http服务器实现文件上传与下载(二)
    Http服务器实现文件上传与下载(三)
    NHibernate VS IbatisNet
    5. Element-UI的基本使用
    4. Vue脚手架
    3. Vue单文件组件
    webpack中的加载器
    webpack
    02.模块化相关规范
    01.前端工程化的学习目标
  • 原文地址:https://www.cnblogs.com/yonyong/p/8796222.html
Copyright © 2011-2022 走看看