1. 程式人生 > >一段有意思的java程式碼

一段有意思的java程式碼

最近在一本書上看到的,書名 突破java程式設計師16課。先看程式碼

class Base {
	private int i = 2;
	
	public Base() {
             System.out.println(this.i);
             this.display();
	}
	
	public void display() {
		System.out.println(this.i);
	}
}

class Sub extends Base {
	private int i = 22;
	
	public Sub() {//這裡會隱式呼叫super()
		i=222;
	}
	
	public void display() {
		System.out.println(this.i);
	}
}
public class Demo {
	public static void main(String[] args) {
		new Sub();
	}
}

這段程式碼最後輸出的是2,0。

這裡面有幾個概念,搞清楚就明白了。不過我記這個的時候還是有點混淆的,只是大概模糊覺得是這麼回事。

1、java物件的構造器只負責對java物件例項變數執行初始化(賦初始值)

2、執行子類構造器之前會先執行父類構造器

3、變數的編譯時型別和執行時型別不同時:

            1)通過該變數訪問它引用的物件的例項變數,該例項變數值由申明該變數的型別決定。

            2)通過該變數訪問它引用的物件的例項方法,該方法行為將由它所引用的物件來決定。