java分割句子_关于Java的一些句子
java分割句子
本文沒有新內容。 我只是收集了一些瑣碎的語句,對于某些初級程序員來說,這可能并非瑣碎。 無聊的舊東西。
如果您發生了所有這些事情,那么您對Java的了解將比普通的家庭妻子要多。 我不知道是否有必要了解所有這些內容。 如果您不了解其中某些功能,則可以成為一名相當不錯的Java程序員。 但是,本文中的許多新信息可能表明您還有發展空間。
有4種不同的保護類型
在Java中(不是三個)。 這些是private ,打包的私有的, protected和public 。 如果您在類中定義元素時未指定任何保護修飾符,則它將被包裝為私有(而不是公共且不受保護)。
Java有四個保護級別。
另一方面,如果您未在接口的方法聲明前指定保護修飾符:它將是公共的。 您可以將其指定為顯式public但是它對Java沒有影響,SONAR不會像您這樣做。
保護是傳遞性的
我對Java的看法是,這是技術錯誤,它允許您有選擇地在接口的方法前面編寫public 。
同樣,您可以在接口中字段的前面,甚至是static ,寫final 。 這可能暗示它們可能是非靜態的或非最終的:不正確。 接口的字段是final和static。 總是。
受保護和私有包不一樣
程序包私有(或默認)保護將允許同一程序包的其他類訪問方法或字段。 受保護的方法和字段可以在同一包中的類中使用(到目前為止與私有包相同),此外,還可以從擴展包含受保護的字段或方法的類的其他類中使用受保護的方法和字段。
受保護是可傳遞的
如果有三個包a , b和c ,每個包含一個已命名的類A , B和C使得B延伸A和C延伸B那么類C可以訪問的受保護的字段和方法A 。
package a;public class A {protected void a() {} } package b;import a.A;public class B extends A {protected void b() {a();} } package c;import b.B;public class C extends B {protected void c() {a();} }接口無法定義受保護的方法
許多人認為您還可以在接口中定義protected方法。 在對程序進行編程時,編譯器可以快速而殘酷地使它變得顯而易見:您不能。 順便說一句:這就是為什么我認為在接口中允許public關鍵字是一個技術錯誤:它使人們認為它也可能是其他東西。
私人就是新的公眾
如果要在接口中聲明一個protected方法,則可能不了解封裝。
私人不是那么私人
專用變量和方法在編譯單元內部可見。 如果聽起來太神秘了:在同一Java文件中(幾乎)。 這比“在定義它們的類中”要多。 從同一編譯單元中的類和接口也可以看到它們。 內部類和嵌套類可以看到私有字段和將它們圍起來的類的方法。 但是,封閉類也可以看到它們封閉到任何深度的類的私有方法和字段。
后者并不廣為人知。 事實上,它很少有用。
私有不是課程級別的對象
如果可以訪問變量或方法,則無論它屬于哪個對象,都可以訪問它。 如果this.a是可訪問的則another.a也接近假定another是同一個類的實例。 屬于同一類實例的對象可以互相愚弄變量或方法。 雖然很少有這樣的代碼。 現實生活中的異常是equals() (由Eclipse第15和18行生成):
package a;public class PrivateIsClass {private Object object;@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;PrivateIsClass other = (PrivateIsClass) obj;if (object == null) {if (other.object != null)return false;} else if (!object.equals(other.object))return false;return true;} }靜態類可能有很多實例
保護不是對象級別。 這是班級的。
不應具有任何實例的類通常稱為實用程序類。 它們僅包含靜態字段和靜態方法,并且唯一的構造函數是私有的,不會從該類的任何靜態方法中調用。 在Java 8中,您可以在接口中實現這種野獸,因為Java 8接口中可以包含靜態方法。 我不相信我們應該使用該功能而不是實用程序類。 我并不完全相信我們應該完全使用實用程序類。
靜態類始終位于另一個類(或接口)中。 它們是嵌套類。 它們是靜態的,就像靜態方法無法訪問類的實例方法和字段一樣,靜態嵌套類也無法訪問嵌入類的實例方法和字段。 這是因為嵌套類沒有對嵌入類實例的引用(如果需要,可以使用指針)。 與嵌套類相反,內部類是非靜態的,沒有嵌入類的實例就無法創建。 內部類的每個實例都有對嵌入類的一個實例的完全引用,因此內部類可以訪問嵌入類的實例方法和字段。
因此,如果沒有周圍類的實例,就無法創建內部類。 如果這是當前對象(也稱為this ,則無需指定它。 在這種情況下,您可以編寫new ,在這種情況下,它只是this.new的簡寫形式。 在靜態環境中,例如從靜態方法中,您必須指定內部類應使用哪個封閉類實例創建內部類。 參見第10行:
package a;class Nesting {static class Nested {}class Inner {}void method(){Inner inner = new Inner();}static void staticMethod(){Inner inner = new Nesting().new Inner();} }匿名類只能訪問最終變量
變量必須有效才能最終
當在方法內部定義匿名類時,它可以訪問局部變量(如果它們是最終變量)。 但這是含糊的。 他們必須被宣布為final并且他們也必須是有效的決賽。 這是Java 8中的一點發布。您無需將此類變量聲明為final但它們仍必須是有效的final。
Java 8不需要最終的,只有有效的最終
無論如何,為什么必須要聲明final,所以為什么要聲明final。 像方法參數一樣。 他們也必須是決賽。 您說這不是Java的要求嗎? 好吧,你是對的。 這是良好風格編程的要求。
翻譯自: https://www.javacodegeeks.com/2014/11/some-sentences-about-java.html
java分割句子
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java分割句子_关于Java的一些句子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑C盘变红内存不足电脑C盘变红怎么办
- 下一篇: java美元兑换,(Java实现) 美元