学而实习之 不亦乐乎

Java 抽象类和普通类

2023-12-17 08:48:06

一、抽象类

Java中的抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类通常用于定义一些通用的属性和方法,但是这些方法的具体实现需要在子类中完成。抽象类中可以包含抽象方法和非抽象方法。

抽象方法是一种没有实现的方法,只有方法的声明,没有方法体。抽象方法必须在抽象类中声明,而且子类必须实现这些抽象方法。如果子类没有实现抽象方法,那么子类也必须声明为抽象类。

抽象类的子类必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。子类可以继承抽象类中的非抽象方法,也可以重写这些方法。

抽象类的方法特性包括:

1. 抽象方法必须在抽象类中声明,而且没有方法体。

2. 抽象类可以包含非抽象方法,这些方法可以被子类继承或重写。

3. 抽象类不能被实例化,只能被继承。

4. 抽象类的子类必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。

5. 抽象类可以有构造方法,但是不能被直接调用,只能被子类调用。

6. 抽象类可以有静态方法和静态变量,但是不能被子类继承或重写。

二、抽象类跟普通类的区别

有以下几个区别:

1. 实例化:普通类可以直接实例化对象,而抽象类不能被实例化。抽象类只能作为父类被继承,子类必须实现抽象类中的抽象方法才能被实例化。

2. 抽象方法:抽象类中可以包含抽象方法,而普通类不可以。抽象方法是一种没有具体实现的方法,只有方法的声明,没有方法体。子类继承抽象类后,必须实现抽象类中的所有抽象方法。

3. 继承:普通类可以单独继承其他类,而抽象类只能作为父类被继承。一个类只能继承一个抽象类,但可以同时继承一个抽象类和其他普通类。

4. 多态性:抽象类可以通过多态性的特性,引用指向子类对象。这样可以实现对不同子类对象的统一操作。而普通类没有多态性的特性。

5. 实现细节:普通类可以包含属性、方法和构造函数等实现细节,而抽象类可以包含属性、方法、构造函数和抽象方法等实现细节。

总的来说,抽象类是一种特殊的类,用于定义一组相关的类的共同特征和行为,强制子类实现抽象方法。而普通类是一种具体的类,可以直接实例化对象,并且可以包含具体的实现细节。