成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

阿里 Java 手冊系列教程:為啥強制子類、父類變量名不同?

XGBCCC / 1530人閱讀

摘要:所以看出和兩個的對應指針數(shù)一樣,一個為一個為這就引出了變量的知識點,如手工畫的圖二為啥強制子類父類變量名不同阿里巴巴手冊是這樣寫的強制避免在子父類的成員變量之間或者不同代碼塊的局部變量之間采用完全相同的命名方式,那會導致代碼可讀性降低。

摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝!

目錄

父子類變量名相同會咋樣?

為啥強制子類、父類變量名不同?

可落地項目小思考

一、父子類變量名相同會咋樣?

有個小故事,今天群里面有個人問下面如圖輸出什么?

我回答:60。但這是錯的,答案結(jié)果是 40 。我知錯能改,然后說了下父子類變量不建議同一個名稱。

可見,父子變量名相同會令人 “Confusing”。再舉個例子,新建 ParentClass 類:

public class ParentClass {
    public String name = "parent";
    
    public static void main(String[] args) {
        ParentClass parentClass = new SonClass();
        SonClass sonClass = new SonClass();
    
        System.out.println("parentClass.name = " + parentClass.name);
        System.out.println("sonClass.name = " + sonClass.name);
        System.out.println("debug...");
    }
}

class SonClass extends ParentClass {
    public String name = "son";
}

上面如果答對的,這個肯定知道結(jié)果。運行程序打印如下:

parentClass.name = parent
sonClass.name = son
debug...

斷點到 System.out.println("debug..."); 該行,debug 下如圖:

debug 后,答案顯然:

前面兩行,new 出來兩個不同 SonClass 實例

每個實例都會有子類的成員變量以及父類的成員變量,這個叫做實例變量

如果是 String 的值,都會指向 JVM 常量池。所以看出 sonparent 兩個 String 的對應指針數(shù)一樣,一個為 440/一個為 439

這就引出了變量的知識點,如手工畫的圖:

二、為啥強制子類、父類變量名不同?

阿里巴巴 Java 手冊是這樣寫的:

【強制】避免在子父類的成員變量之間或者不同代碼塊的局部變量之間采用完全相同的命名方式,那會導致代碼可讀性降低。

說明:子類、父類成員變量名相同,即使屬性是 public 也是能通過編譯,雖然局部變量不在同一方法內(nèi)的不同代碼中同名也是合法的,但避免使用。 setter / getter 的參數(shù)名稱也避免成員變量名相同。

具體的反例我也不寫了。為啥強制,顯而易見有幾點:

可以提高代碼可讀性

減少新人看代碼時不必要的困惑

減少重構(gòu)時不必要的困惑

...

多次使用能值出同源

正確的例子 ParentClass 類:

public class ParentClass {
    public String parentName = "parent";
    
    public static void main(String[] args) {
        ParentClass parentClass = new SonClass();
        SonClass sonClass = new SonClass();
    
        System.out.println("parentClass.parentName = " + parentClass.parentName);
        System.out.println("sonClass.sonName = " + sonClass.sonName);
        System.out.println("debug...");
    }
}

class SonClass extends ParentClass {
    public String sonName = "son";
}

兩種寫法的優(yōu)缺點,一目了然。

三、可落地小總結(jié)

這里是說了一種代碼風格,類似味道。本身不影響程序運行,沒有所謂的潛在故障和錯誤。那么味道的好處總會能體驗到。

比如這里談到繼承,OOP 講究:高內(nèi)聚,低耦合;多組合,少繼承。比如控制語句,推薦多層嵌套不超過 3 層。那繼承也一樣:推薦繼承關(guān)系不超過 3 層。

還有 Boolean 成員變量定義,命名不要加 is 前綴。不然 getter 方法會少了 is,部分解析會引起序列化問題。我的做法:在設(shè)計數(shù)據(jù)庫表字段的時候,不考慮 Boolean ,用 Byte 類型去處理。這樣 is 不 is 就不 care 了。

...

好的命名規(guī)約,好的編碼風格,簡捷清爽,引出無限風光

代碼示例

本文示例讀者可以通過查看下面?zhèn)}庫的中的 alibaba/java/ParentClass.java :

Github:https://github.com/JeffLi1993/java-core-learning-example

Gitee:https://gitee.com/jeff1993/java-core-learning-example

如果您對這些感興趣,歡迎 star、follow、收藏、轉(zhuǎn)發(fā)給予支持!

參考資料

阿里 Java 手冊系列教程:https://www.bysocket.com/arch...

《阿里巴巴 Java 開發(fā)手冊》

以下專題教程也許您會有興趣

《Spring Boot 2.x 系列教程》

《Java 核心系列教程》

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77486.html

相關(guān)文章

  • Java系列之泛型

    摘要:總結(jié)泛型的類型必須是引用類型,不能是基本類型,泛型的個數(shù)可以有多個,可以使用對創(chuàng)建對象時的泛型類型以及方法參數(shù)類型進行限制,如使用關(guān)鍵字和對泛型的具體類型進行向下限制或向上限制,最后一點,可以聲明泛型數(shù)組,但是不能創(chuàng)建泛型數(shù)組的實例。 自從 JDK 1.5 提供了泛型概念,泛型使得開發(fā)者可以定義較為安全的類型,不至于強制類型轉(zhuǎn)化時出現(xiàn)類型轉(zhuǎn)化異常,在沒有反省之前,可以通過 Object...

    MadPecker 評論0 收藏0
  • Java面試通關(guān)要點匯總集(基礎(chǔ)篇之基本功,非原作者)

    摘要:面試通關(guān)要點匯總集部分解答說明如果你有幸能看到的話,本文整體框架來自阿里梁桂釗的博文,總結(jié)的非常不錯。這樣做的目的是對內(nèi)部數(shù)據(jù)進行了不同級別的保護,防止錯誤的使用了對象的私有部分。被繼承的類稱為基類和父類或超類。 showImg(https://segmentfault.com/img/remote/1460000013442471?w=1280&h=819); Java面試通關(guān)要點匯...

    smallStone 評論0 收藏0
  • Java 面向?qū)ο螅ㄉ希?/b>

    摘要:對象的引用關(guān)鍵字總是指向調(diào)用該方法的對象。根據(jù)出現(xiàn)位置的不同,作為對象的默認引用有兩種情形。構(gòu)造器中引用該構(gòu)造器正在初始化的對象。如果同一個類中包含了兩個或兩個以上方法的方法名相同,但形參列表不同,則被稱為方法重載。 類和對象 定義類 面向?qū)ο蟮某绦蛟O(shè)計過程中有兩個重要概念:類(class)和對象(object,也被稱為實例,instance),其中類是某一批對象的抽象,可以把類理解成...

    SimonMa 評論0 收藏0
  • 阿里巴巴制定了這 16 條設(shè)計規(guī)約!

    摘要:強制存儲方案和底層數(shù)據(jù)結(jié)構(gòu)的設(shè)計獲得評審一致通過,并沉淀成為文檔。正例淘寶訂單狀態(tài)有已下單待付款已付款待發(fā)貨已發(fā)貨已收貨等。確定指導后續(xù)設(shè)計與演化的原則。 showImg(https://segmentfault.com/img/remote/1460000016159838?w=1215&h=642); 1、【強制】存儲方案和底層數(shù)據(jù)結(jié)構(gòu)的設(shè)計獲得評審一致通過,并沉淀成為文檔。 說...

    archieyang 評論0 收藏0
  • 1、繼承 2、抽象類 3、綜合案例---員工類系列定義

    摘要:繼承的出現(xiàn)讓類與類之間產(chǎn)生了關(guān)系,提供了多態(tài)的前提。繼承的注意事項繼承的注意事項在中,類只支持單繼承,不允許多繼承,也就是說一個類只能有一個直接父類,例如下面這種情況是不合法的。 01繼承的概述 *A:繼承的概念 *a:繼承描述的是事物之間的所屬關(guān)系,通過繼承可以使多種事物之間形成一種關(guān)系體系 *b:在Java中,類的繼承是指在一個現(xiàn)有類的基礎(chǔ)上去構(gòu)建一個新的類, ...

    wuaiqiu 評論0 收藏0

發(fā)表評論

0條評論

XGBCCC

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<