java查錯題(經常混淆)
阿新 • • 發佈:2019-01-01
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>