一个类如果没有抽象方法,可不可以定义为抽象类? 如果可以,有什么意思
答:可以!不让创建对象!
抽象类(abstract)不能跟哪些关键字共存?
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){ } } 结果:
编译报错:
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){ } } 结果:
编译报错:
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){ } } 结果:
编译报错:
Test.java:5: 非法的修饰符组合:abstract 和 static
static abstract void show(); ^ Test.java:8: Student 中的 show() 无法覆盖 Person 中的 show();被覆盖的方法为 sta tic public void show(){} |
|