抽象类
语法格式:
[修饰符] abstract class 类名{}抽象类无法被实例化
虽然抽象类没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的
抽象类中可以定义抽象方法
抽象方法的语法:在方法的修饰符列表中添加abstract关键字,并且抽象方法应该以”;”结束,不能带有”{}”
例如:public abstract void m();抽象类中不一定有抽象方法,但抽象方法必须出现在抽象类中
一个非抽象的类继承抽象类,必须将抽象类中的抽象方法覆盖,实现,重写
// 动物类 public abstract class Animal { private String name; // 构造函数 public Animal() {} public Animal(String name) { this.name = name; } // 非抽象方法 public void setName(String name) { this.name = name; } public String getName() { return name; } // 抽象方法:成员方法 public abstract void run(); } // 猫科类 public class Cat extends Animal{ //注意:子类一定要重写父类中的抽象方法不然会编译错误 public void run() { System.out.println("猫会跑步"); } } // 测试类 public class AnimalTest { public static void main(String[] args) { Animal animal = new Cat(); animal.run(); } }
抽象类的用途:
Java中抽象类更利于代码的维护和重用。
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
- 因为抽象类不能实例化对象,所以必须要有子类来实现它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。
比如本科和研究生可以抽象成学生,他们有相同的属性和方法。这样当你对其中某个类进行修改时会受到父类的限制,这样就会提醒开发人员有些东西不能进行随意修改,这样可以对比较重要的东西进行统一的限制,也算是一种保护,对维护会有很大的帮助。
- 当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类的那些属性和方法。
比如学校又新产生了专科生这类学生,那么专科生直接继承学生,然后对自己特有的属性和方法进行补充即可。这样对于代码的重用也是很好的体现。