標籤:
今天看了劍指offer中的第二章-面試需要的基礎知識,對其中的一段C#面試代碼,比較感興趣,想著能否給改成java,結果沒改成,出現了問題,本文是針對這一點來總結一下,下面是C#與java代碼,但是在eclipse環境下,java代碼如此改寫,編譯器提醒建構函式有問題,究其原因,問題是由java的建構函式前的存取修飾詞public與特殊修飾符static所導致的。
java 建構函式,可以被存取修飾詞修飾,而不能被特殊修飾符修飾;(在編譯器經過測試)
存取修飾詞: public (最常用,其他類的任何位置都可以訪問)
protected(能夠在同一包中被子類訪問)
什麼都不寫,""(能夠被同一包裡的類訪問)
private(經常使用的單例模式中)
特殊修飾符: static (靜態) final(最終) abstract(抽象) synchronized(同步) 這些都不能夠放在建構函式前使用
1 class A{ 2 public A(String text){ 3 console.writeln(text); 4 } 5 } 6 7 class B(){ 8 static A a1=new A("a1"); 9 A a2=new A("a2");10 11 static B(){12 a1=new A("a3");13 }14 15 public B(){16 a2=new A("a4");17 }18 }19 class Program{20 B b=new B();21 }View Code
1 public class A { 2 public A(String aStr){ 3 System.out.println("A 建構函式 初始化:"+aStr); 4 } 5 } 6 7 class B { 8 static A a = new A("a1"); 9 A aa = new A("a2");10 11 static B() {12 a = new A("a3");13 }14 15 public B() {16 aa = new A("a4");17 }18 public static void main(String[] args) {19 B b=new B();20 }21 }java View Code
java建構函式修飾符