不多说,先来段代码。
public class Abstract { public static void main(String[] args) { cl2 c=new cl2(); c.method(); } } abstract class Abc { public abstract void method(); } class cl2 extends Abc { public void method() { System.out.println("具体的方法"); } }
一个抽象类里面可以没有抽象方法
比如
abstract class Abc { public void method() { System.out.println("抽象类面的方法可以是具体的"); } }
这是一个抽象类,但是他的方法是具体,这是可以的,没有报错。
但是如果
class Abc { abstract public void method(); }
这是会报错的,因为有抽象方法必须是抽象类。
----------------------------------------
class cl2 extends Abc { public void method() { System.out.println("具体的类"); } }
此时继承了ABC类,cl2类是一个具体的类。我们区份一个类是抽象还是具体,就是看abstract关键字
如果有这个关键字,他就是抽象类,没有就是一个具体的类,所以上面的代码中cl2是具体类。
继续
abstract class Abc { abstract public void method(); } class cl2 extends Abc { }
这里会报错,cl2没有关键字abstract 所以他是一个具体的类,里面的方法必须具体,但是他继承了
ABC类,拥有了抽象方法,所以会报错,所以需要在cl2里面具体mehod方法。
当然也继承抽象类的子类也可以是抽象类
比如
abstract class Abc { abstract public void method(); } abstract class cl2 extends Abc {
}
cl2是一个抽象类,他继承了ABC类,拥有了ABC类中的抽象方法
但是他无需具体,因为他自己就是一个抽象类
------------------------------------
上面是抽象类一些注意的点。
总的来说,一个抽象类可以没有抽象方法,但是有抽象方法必须是抽象类,具体的类里面必须都是具体的方法。
大一狗初学,不对请谅解