一、什么是抽象类
抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类中可以包含抽象方法和非抽象方法。抽象方法是没有方法体的方法,必须在子类中实现。非抽象方法则是普通的方法,可以直接在抽象类中实现。
二、抽象类的作用
1、抽象类用于约束子类的行为,可以规定子类必须实现哪些方法。
public abstract class Animal { public abstract void eat(); public abstract void sleep(); } public class Cat extends Animal { public void eat() { System.out.println("Cat is eating..."); } public void sleep() { System.out.println("Cat is sleeping..."); } } public class Dog extends Animal { public void eat() { System.out.println("Dog is eating..."); } public void sleep() { System.out.println("Dog is sleeping..."); } }
2、抽象类可以用于代码复用,可以将一些通用的方法和属性放在抽象类中。
public abstract class Shape { private String color; public Shape(String color) { this.color = color; } public String getColor() { return color; } public abstract double getArea(); } public class Rectangle extends Shape { private double width; private double height; public Rectangle(String color, double width, double height) { super(color); this.width = width; this.height = height; } public double getArea() { return width * height; } } public class Circle extends Shape { private double radius; public Circle(String color, double radius) { super(color); this.radius = radius; } public double getArea() { return Math.PI * radius * radius; } }
三、抽象类与接口的区别
1、抽象类可以包含抽象方法和非抽象方法,而接口只能包含抽象方法。
2、一个类只能继承一个抽象类,但是可以实现多个接口。
3、抽象类可以有构造方法,而接口不能有构造方法。
4、抽象类和接口都不能被实例化。
四、注意事项
1、抽象类中的抽象方法必须在子类中实现,否则子类也必须声明为抽象类。
2、抽象类中可以有非抽象方法的实现,这些方法可以被子类直接使用。
3、抽象类中可以包含变量和常量。
五、总结
抽象类是一种特殊的类,不能被实例化,只能被继承。抽象类用于约束子类的行为,可以规定子类必须实现哪些方法,也可用于代码复用。