日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

在 Java OOP 编程中的注意事项

發布時間:2024/4/13 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在 Java OOP 编程中的注意事项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 Java OOP 編程中的注意事項

  • 重寫
    • 方法
    • 字段
  • 反射
  • static
  • 接口
  • abstract
  • Maven
  • JUnit

重寫

方法

  • 當子類重寫超類的方法時,子類該方法的被訪問權限不能低于超類方法。如果超類方法為 public,則子類被重寫的方法也要為 public。即子類重寫方法的訪問權限不能縮小。

  • 當子類重寫超類的方法時,可以不拋出異常,如果拋出異常,則子類該方法中聲明的檢查型異常不能比超類方法中聲明的更通用。即子類重寫方法拋出的異常可以是超類方法的子類,也可以不拋出異常。

  • 當子類的方法簽名與超類相同,子類該方法的返回值也要與超類返回值相同或為其子類。即重寫最多只能令返回值更特殊。

  • 字段

  • 在 Java 中,字段不會被重寫。這一點跟該字段有沒有被聲明為 final、protected 無關。
  • 反射

  • 方法 getMethod 只能獲得目標類的所有能用所有的公共方法。

    而方法 getDeclaredMethod 只能獲得類自身聲明的所有方法,這不包括繼承自超類的方法,但包括實現接口的方法。

  • 如果反射調用的方法本身可以拋出異常,則當其拋出異常時,此異常會被反射“吞掉”,封裝成 InvocationTargetException 異常重新拋出。可以使用該封裝異常的方法 getTargetException 或 getCause 來獲取被吞掉的異常。

  • 基本類型對應的 class 對象是通過直接在其后加后綴 .class 來獲得,而不是對應的包裝類的 class 對象。

  • 反射會影響代碼的可讀性,同時具有一定的危險性。又因為它的危險性,所以需要編寫額外的代碼去減弱這種危險,這又會帶來一定的復雜度。因此,建議在如下情況時才考慮反射:

  • 編寫的是一種框架代碼,組內已統一對反射的編寫規范。

  • 用于對自己的外界不可訪問的方法的單元測試。

  • 自己依賴的類在設計上不合理,但自己無法對其重構。此時可在必要時酌情使用來擁有訪問該類內部數據的權限。如清除封裝在 String 中的密碼等等。

  • 【廢棄】要調用的方法有很多重載,而這些重載方法的形參之間又有繼承關系。這里需要調用形參與實參真實類型相同的一個重載方法,但此時不知道實參的真實類型,因此不能使用強制轉換。此時可以使用反射來獲得實參的真實類型,從而調用正確的重載方法。【廢棄。如果遇到這種情況,優先選擇重構而不是反射。這種情形下使用反射容易調用自己忘記編寫的不存在的方法,從而引發反射異常】

  • static

  • static 方法不會被重寫(但是,可以通過關鍵字 final 來阻止子類定義同簽名的方法。)。超類引用不能調用子類 static 方法。

    因此,每個子類都有的同簽名方法不要定義為 static。

  • 對于子類與超類同簽名的方法,有沒有使用 static 要保持一致。如果超類方法使用了 static,則子類同簽名方法也要使用 static。且 static 不能與 abstract 同時使用。

  • 接口

  • public 是接口的默認訪問控制,且接口中只能聲明 public 方法。

  • 接口中的方法可以通過關鍵字 default 來提供實現。

  • abstract

  • 標記為 abstract 的方法不能在這個類中提供實現。

  • 可以將抽象類的構造器聲明成 protected,但其非抽象子類的必須聲明為 public,否則其它的普通類將無法創建該子類的對象。

  • Maven

  • Maven 不允許模塊之間的循環依賴。如果原來有這種需求,需要將它們都依賴的類抽取出來作為一個新模塊,以供其它模塊依賴。

  • Maven 的測試插件 maven-surefire-plugin 默認只會測試如下的類方法:

    • 類的訪問權限為 public,且類名含 test

    • 類的默認構造器的訪問權限為 public

    • 方法的訪問權限為 public,且方法名的前綴為 test

  • JUnit 注解對 Maven 默認是無效的。在默認情況下,使用 JUnit 注解不能改變 Maven 的測試行為。

  • JUnit

  • JUnit 注解對 Maven 默認是無效的。在默認情況下,使用 JUnit 注解不能改變 Maven 的測試行為。

  • JUnit 中的測試類的測試方法可以聲明為 default,連構造器也可以。

  • 如果被測試的方法為繼承自 Object 的方法,則測試方法的方法名必須加前綴或后綴(如 test)來使之不同。

  • 對于方法 assertEquals,它的第一個是形參是期望值,第二個形參才是實際值。

  • 總結

    以上是生活随笔為你收集整理的在 Java OOP 编程中的注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。