怎么覆蓋toString方法、為什么要覆蓋toString方法?


 

首先我們來看下JDK1.6所有父類Object中的toString方法是怎么描述的:

————————————————————————

toString

public String toString()

返回該對象的字符串表示。通常,toString 方法會返回一個“以文本方式表示”此對象的字符串。結果應是一個簡明但易於讀懂的信息表達式。建議所有子類都重寫此方法。

Object 類的 toString 方法返回一個字符串,該字符串由類名(對象是該類的一個實例)、at 標記符“@”和此對象哈希碼的無符號十六進制表示組成。換句話說,該方法返回一個字符串,它的值等於:

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

返回:

該對象的字符串表示形式。

————————————————————————

 

從API文檔中可以了解到Object.toString方法(JVM中自帶的)是返回一長串字符串即地址(cn.com.zxjy.oo.jdbc.project.vo.UserVo@15db9742

),而不是你想要的原始數據,所以怎么輸出類中的原始數據呢?

 

下面我給你舉個簡單的例子:

public class UserVo { private String userId; private String password; private String userType; public UserVo(String userId, String password, String userType) { super(); this.userId = userId; this.password = password; this.userType = userType; } public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUserType() { return userType; } public void setUserType(String userType) { this.userType = userType; } /*public String toString() { return userId + " " + password + " " + userType; }*/
  public static void main(String args[]) { UserVo vo = new UserVo("zx001", "趙克德", "中層主管"); System.out.println(vo.toString()); } }

                (文中綠色字體表示重寫的toString 方法)

 重寫toString方法結果:

 

zx001 趙克德 中層主管

 

   未重寫toString方法(調用Object中方法)結果:

cn.com.zxjy.oo.jdbc.project.vo.UserVo@15db9742

 

 

             在User類中 如果不實現重寫toString方法(覆蓋原Object中的toString方法),則主方法中將自動調用Objec中的toString方 法,將輸出的是User類中的地址(cn.com.zxjy.oo.jdbc.project.vo.UserVo@15db9742);

 

            而如果在User類中重寫上面的toString方法(覆蓋原Object中的toString方法),則主方法中調用重寫的toString方法,輸出類中原本的數據(zx001 趙克德 中層主管);

     

           所以如果想要輸出原來類中的數據而不是類中的地址,就需要在類中重寫toString方法,達到覆蓋Object超類中的toString方法的目的。

 

轉發請標明原稿出處:https://www.cnblogs.com/amoszha/p/10894895.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM