一個類如果沒有抽象方法,可不可以定義為抽象類? 如果可以,有什么意思
答:可以!不讓創(chuàng)建對象!
抽象類(abstract)不能跟哪些關(guān)鍵字共存?
private 沖突(abstract的方法是強制子類重寫的,改成private后私有方法無法繼承、重寫)
final 沖突(final不能被重寫)
static 無意義
=====================測試abstract與private============================
abstract class Person{
//public abstract void show(); private abstract void show(); } class Student extends Person{ }
class Test{ public static void main(String [] args){ } } 結(jié)果:
編譯報錯:
Test.java:3: 非法的修飾符組合:abstract 和 private
private abstract void show(); ^ Test.java:5: Student 不是抽象的,并且未覆蓋 Person 中的抽象方法 show() class Student extends Person{ =========================測試abstract與final============================
abstract class Person{
//public abstract void show(); //private abstract void show(); final abstract void show(); } class Student extends Person{ public void show(){} } class Test{ public static void main(String [] args){ } } 結(jié)果:
編譯報錯:
Test.java:4: 非法的修飾符組合:abstract 和 final
final abstract void show(); ^ Test.java:7: Student 中的 show() 無法覆蓋 Person 中的 show();被覆蓋的方法為 fin al public void show(){} ================================static與abstract測試====================
abstract class Person{
//public abstract void show(); //private abstract void show(); //final abstract void show(); static abstract void show(); } class Student extends Person{ public void show(){} } class Test{ public static void main(String [] args){ } } 結(jié)果:
編譯報錯:
Test.java:5: 非法的修飾符組合:abstract 和 static
static abstract void show(); ^ Test.java:8: Student 中的 show() 無法覆蓋 Person 中的 show();被覆蓋的方法為 sta tic public void show(){} |
|