標籤:ext ble super關鍵字 cti 統一 修飾符 name turn 關鍵字
package practice.javase;public abstract class Name { private String name; public abstract boolean isStupidName(String name){};}
錯誤:編譯無法通過,原因抽象方法不能有方法體;改正,將抽象方法改為普通方法,或去掉方法體;
package practice.javase;public abstract class Name { private String name; public abstract boolean isStupidName(String name);;}
package practice.javase;public abstract class Name { private String name; public boolean isStupidName(String name){ return false;};}
package practice.javase;public class Something { void doSomething(){ private String s = ""; int l = s.length(); }}
錯誤:編譯無法通過,原因局部變數不能有許可權修飾符,許可權修飾符是為了設定存取權限而設定的,局部變數的存取權限已經確定是在方法體內了,故錯誤,改正,去掉許可權修飾符;
package practice.javase;public class Something { void doSomething(){ String s = ""; int l = s.length(); }}
package practice.javase;public abstract class Something1 { private abstract String doSomething();}
錯誤:編譯無法通過,原因抽象類別中的抽象方法是要被其子類繼承和重寫的,所以許可權只能是public或者protected,或者預設許可權,不能使private,private不能被其他類訪問,和抽象本意衝突,沒有意義;
package practice.javase;public abstract class Something1 { abstract String doSomething();}
package practice.javase;public class Something2 { public static void main(String[] args) { Something2 something2 = new Something2(); something2.doString(); System.out.println("something2.doString return"+doString()); } public String doString(){ return "Do SomeString....."; }}
錯誤:靜態方法中不能調用非靜態方法或成員變數,如果想調用,只能通過對象調用,因為他是執行個體方法不是類方法;
package practice.javase;public class Something2 { public static void main(String[] args) { Something2 something2 = new Something2(); something2.doString(); System.out.println("something2.doString return"+something2.doString()); } public String doString(){ return "Do SomeString....."; }}
此處Somestring3類的檔案名稱是OtherString.javapackage practice.javase;public class Something3 { private static void main(String[] something_to_do){ System.out.println("Do Something...."); }}
錯誤:這段代碼編譯不會報錯,但是我們注意一個問題Somestring3類的檔案名稱是OtherString.java,那麼就一定不正確,java的機制是編譯後產生.java檔案,解譯器解釋成二進位檔案
package practice.javase;public class OtherString { private static void main(String[] something_to_do){ System.out.println("Do Something...."); }}
package practice.javase;public interface A { int x = 0;}package practice.javase;public class B { int x = 1;}package practice.javase;public class C extends B implements A{ public void pX(){ System.out.println(x); } public static void main(String[] args) { new C().pX(); }}
Class C編譯報錯:
介面的含義理解:介面可以理解成統一的"協議",而介面中的屬性也屬於協議中的內容;但是介面的屬性都是公用的,靜態,最終的
介面的成員特點:
A:成員變數 只能是常量。預設修飾符 public static final
B:成員方法 只能是抽象方法。預設修飾符 public abstract
推薦:永遠手動給出修飾符。
在Class C中繼承了B,繼承了B中非私人的方法和屬性,但要通過super關鍵字來調用父類中的成員變數和方法;
package practice.javase;public class C extends B implements A{ public void pX(){ System.out.println(super.x); } public static void main(String[] args) { new C().pX(); }}
package practice.javase;public interface Playable { void play();}package practice.javase;public interface Bounceable { void play();}package practice.javase;public interface Rollable extends Playable, Bounceable{ Ball ball = new Ball("PingPang");}package practice.javase;public class Ball implements Rollable{ private String name; public Ball(String name) { super(); this.name = name; } public String getName() { return name; } public void play(){ ball = new Ball("FootBall"); System.out.println(ball.getName()); } }錯誤:編譯錯誤,錯誤在ball = new Ball("FootBall");,變數未經聲明,
package practice.javase;public class Ball implements Rollable{ private String name; public Ball(String name) { super(); this.name = name; } public String getName() { return name; } public void play(){ Ball ball = new Ball("FootBall"); System.out.println(ball.getName()); } }
Java筆試--代碼錯誤修正