1. 程式人生 > >java查錯題(經常混淆)

java查錯題(經常混淆)

1.java靜態方法不能引用在同一個類中的非靜態方法和非靜態成員變數

public class DoSomething {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DoSomething ds = new DoSomething();
		//System.out.println("ds.dosomething returns"+ doSomething()); 錯誤的
		System.out.println("ds.dosomething returns :"+ ds.doSomething());
		System.out.println(x); 
		System.out.println("ds.x returns :"+ ds.x);

	}
	public static int x=1;
	public String doSomething(){
		return "do something.....";
	}

}

2.抽象類方法的實現

abstract class Name{
	public abstract boolean isStupidName(String name);
	//public abstract boolean isStupidName(String name){}  這樣是錯誤的
}

3.區域性變數不能新增任何修飾符

<span style="font-size:18px;">class Something{
	void doSomething(){
		//private String s = "";  only final 可以修飾區域性變數的
		String s = "";
		int l = s.length();
	}
}</span>


4.抽象類方法前不能加private和final修飾符,抽象方法的具體實現細節是為了讓子類來實現的,因此不能為private和final


5.被final修飾的變數不可以修改,但如果修飾物件,可以更改物件裡的內容,不可以改變物件的引用



6.例項變數有預設值,但被final修飾的變數沒有預設預設值,必須初始化指定初始值



7.public class的名字必須和檔名相同,其他的類沒有必要必須和其檔名相同

8.父類和介面同時存在同名變數時候,指定是父類的還是介面的成員變數

<span style="font-size:18px;">public class C extends B implements A{
	public void pX(){
		System.out.println(super.x);
		System.out.println(A.x);
		//System.out.println(x);
	}


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new C().pX();


	}


}


interface A{
	int x = 0; //預設為public static final 
}
class B{
	int x = 1;
}</span>