上次已经为大家介绍过java抽象类的特点有哪些的主要内容了,可以看出抽象类的内容是比较丰富的。今天要介绍的也是与之相关的内容。也就是java中抽象类的定义是什么。一起来了解一下吧。
首先我们需要知道的是,在类的继承中,如果一个新的子类被定义,子类变得越来越具体,父类变得更加一般和通用,类的设计应该保证父子类能够共享特征,有时将父类设计得非常抽象,使得父类没有具体的实例,这样的类叫做抽象类;一般当我们设计一个类,不需要创建此类的实例时,可以考虑将该类设置成抽象类,让其子类实现这个类的抽象方法
其实,抽象类可以没有抽象方法的,代码如下所示:
//抽象类 abstract class Person { String name; public Person() {} //抽象类的构造方法 public abstract void dink(); //抽象方法,无{}方法体 public void eat() { //非抽象方法 }; } class Student extends Person { @Override public void eat() { System.out.println("吃饭"); } @Override public void dink() { System.out.println("喝水"); } }
但是,abstract修饰的方法也可以说是抽象方法。
抽象方法的特征:
1.格式,没有方法体,包括{ },例如public abstract void dink();
2.抽象方法只保留方法的功能,具体的执行,交给继承抽象类的子类,由子类重写改抽象方法
3.如果子类继承抽象类,并重写了父类的所有的抽象方法,则此子类不是抽象类,可以实例化的
4.如果子类继承抽象类,没有重写父类中所有的抽象方法,意味着子类中还有抽象方法,那么此子类必须必须声明为抽象的。
如下图:
上面的例子中,Student子类继承抽象父类,自重写了eat()抽象方法,没有重写drink()抽象方法,会报错,解决方法是把drink()方法也重写了,或者把Student也变成抽象类。
最后说一下,抽象类的使用场景:
抽象类一般在运用多态时,比较适用。
由上文内容可以看出来java中抽象类的定义还是比较清楚的,它的方法也是很容易实现的。如果你对java知识感兴趣,想要了解跟多java常见问题,敬请关注奇Q工具网。
推荐阅读: