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

歡迎訪問 生活随笔!

生活随笔

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

java

[改善Java代码]在接口中不要存在实现代码

發布時間:2024/10/12 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [改善Java代码]在接口中不要存在实现代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第3章? 類、對象及方法

書讀得多而不思考,你會覺得自己知道的很多。

書讀得多而思考,你會覺得自己不懂的越來越多。

—伏爾泰

在面向對象編程(Object-Oriented Programming,OOP)的世界里,類和對象是真實世界的描述工具,方法是行為和動作的展示形式,封裝、繼承、多態則是其多姿多彩的主要實現方式,如此,OOP才會像現在這樣繁榮昌盛、欣欣向榮。

本章主要講述關于Java類、對象、方法的種種規則、限制及建議,讓讀者在面向對象編程的世界中走得更遠,飛得更高。

建議31: 在接口中不要存在實現代碼

看到這樣的標題讀者可能會納悶:接口中有實現代碼?這怎么可能呢?確實,接口中可以聲明常量,聲明抽象方法,也可以繼承父接口,但就是不能有具體實現,因為接口是一種契約(Contract),是一種框架性協議,這表明它的實現類都是同一種類型,或者是具備相似特征的一個集合體。對于一般程序,接口確實沒有任何實現,但是在那些特殊的程序中就例外了,閱讀如下代碼:

1 public class Client { 2 public static void main(String[] args) { 3 // 調用接口的實現 4 B.s.doSomething(); 5 } 6 } 7 8 // 在接口中存在實現代碼 9 interface B { 10 public static final S s = new S() { 11 public void doSomething() { 12 System.out.println("我在接口中實現了"); 13 } 14 }; 15 } 16 17 // 被實現的接口 18 interface S { 19 public void doSomething(); 20 }

仔細看main方法,注意那個B接口。它調用了接口常量,在沒有任何顯式實現類的情況下,它竟然打印出了結果,那B接口中的s常量(接口是S)是在什么地方被實現的呢?答案是在B接口中。

在B接口中聲明了一個靜態常量s,其值是一個匿名內部類(Anonymous Inner Class)的實例對象,就是該匿名內部類(當然,可以不用匿名,直接在接口中實現內部類也是允許的)實現了S接口。你看,在接口中存在著實現代碼吧!

這確實很好,很強大,但是在一般的項目中,此類代碼是嚴禁出現的,原因很簡單:這是一種不好的編碼習慣,接口是用來干什么的?接口是一個契約,不僅僅約束著實現者,同時也是一個保證,保證提供的服務(常量、方法)是穩定、可靠的,如果把實現代碼寫到接口中,那接口就綁定了可能變化的因素,這就會導致實現不再穩定和可靠,是隨時都可能被拋棄、被更改、被重構的。所以,接口中雖然可以有實現,但應避免使用。

注意 接口中不能存在實現代碼。

?

轉載于:https://www.cnblogs.com/DreamDrive/p/5425119.html

總結

以上是生活随笔為你收集整理的[改善Java代码]在接口中不要存在实现代码的全部內容,希望文章能夠幫你解決所遇到的問題。

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