对抽象类的解释说明
文章目录
抽象类
一、什么是抽象类
Java中的抽象类是一种不能直接被实例化的类,需要通过被继承之后才能被使用。抽象类通常被用来作为其他类的基类,以定义一组通用的属性和方法,并强制子类实现其中的一些方法。简单而言,如果一个类没有包含足够的信息来描绘一个具体的对象,那么这个类就是抽象类。
二、抽象类的语法特点
1.代码示例
public abstract class Shape {
private String color;
public Shape(String color) {
this.color = color;
}
// 抽象方法,必须由子类实现
public abstract double getArea();
// 非抽象方法,可以直接被继承和使用
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
这个抽象类定义了一个私有属性color和两个方法:一个抽象方法getArea()用于获取形状的面积,一个非抽象方法getColor()用于获取颜色
2.代码解析
1.抽象类通过在类名前添加abstract关键字来声明
public abstract class Shape {}
2.抽象类中被abstract修饰的方法称为抽象方法,抽象方法不用给出具体的实现体,抽象方法只有声明而没有实现,必须由子类实现才能被调用
// 抽象方法,必须由子类实现
public abstract double getArea();
3.抽象类也是类,内部可以包含普通方法和属性,甚至构造方法,非抽象方法可以有具体的实现,并且可以被继承和使用
private String color;
public Shape(String color) {
this.color = color;
}
// 非抽象方法,可以直接被继承和使用
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
三、抽象类的特性
1.抽象类不能直接实例化对象
Shape shape = new Shape();
//编译出错
//Shape是抽象的,无法被实例化
2.抽象方法不能是private
public abstract class Shape {
abstract private double getArea();
}
//编译出错
//非法的修饰符组合abstract和private
当抽象方法没有加访问限定符时,默认是public
3. 抽象方法不能被final和static修饰,因为抽象方法要被子类重写
public abstract class Shape {
abstract final double methodA();
abstract public static double methodB();
}
//编译出错
//非法的修饰符组合abstract和final
//非法的修饰符组合abstract和static
4. 抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,如果不重写,则子类也是抽象类,必须使用abstract来修饰
5. 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
6.抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量
总结
使用抽象类的主要目的是为了将一些通用的行为和状态抽象出来,从而实现更好的代码重用和维护