java 抽象类
1.错误的语法
// The class SomeAbstract can be either abstract or final, not both
// Illegal modifier for the class SomeAbstract; only public, abstract & final are permitted
// The abstract method someAbstractMethod in type SomeAbstract can only set a visibility modifier, one of public or protected
// This method requires a body instead of a semicolon
step1:
javac SomeAbstract.java
step2:
open by Java Decompiler.exe
SomeAbstract.java
package cn.zno.abstrakt; abstract class SomeAbstract { abstract void m1(); protected abstract void m2(); public abstract void m3(); abstract public void m4(); }
SomeAbstract.class
package cn.zno.abstrakt; abstract class SomeAbstract { abstract void m1(); protected abstract void m2(); public abstract void m3(); public abstract void m4(); }
抽象类不提供缺省值,不合法时直接编译不通过。
关键字顺序问题
void 一定是紧挨方法名
访问权限和抽象不冲突,位置可互换,编译时默认调整为权限 抽象。
抽象类是为了被继承,抽象方法不能降低可见度
抽象类不能实例化,不能用fianl修饰
抽象方法没有方法体,必须用abstract修饰
protected 只能用来修饰field和method