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

原文地址:https://www.cnblogs.com/zno2/p/4569184.html