🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 1、定义抽象类 如果一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类。语法格式如下: ``` [访问修饰符] abstract class 类名 { [访问修饰符] abstract 返回值类型 方法名(参数列表); } ``` abstract 表示该类或该方法是抽象的,如果在一个方法之前使用 abstract 来修饰,则说明该方法是抽象方法,不能有方法体。 包含一个或多个抽象方法的类必须通过在其 class 声明前添加 abstract 关键字将其声明为抽象类。因为一个抽象类不定义完整的实现,所以抽象类也就没有自己的对象。因此,任何使用 new 创建抽象类对象的尝试都会导致编译时错误。 ``` public abstract class Aniaml {} ``` ## 2、抽象方法 * 使用abstract修饰的方法我们称之为抽象方法。 * 抽象方法不含有方法体的。 * 含有抽象方法的类一定是抽象类,抽象类不一定有抽象方法。 * abstract 关键字只能用于普通方法,不能用于 static 方法或者构造方法中。 ``` public abstract class Animal { public abstract void eat(); } ``` 【选择】下面代码怎么修改可以编译时不报错()(选择两项) ``` public abstract class Bike { int colorNum; int brand; int speed; public abstract void speedup(); } public class SpeedBike extends Bike { // (1) public void speedup(); // (2) } ``` ``` A 在位置一处将 SpeedBike 类设为抽象类,同时将位置二处的 speedup 也设为抽象方法 B 将位置一中的 public 改为 final C 将位置二中 speedup() 方法改为抽象方法 D 将位置二中 speedup() 方法中加入方法的实现 ``` 【选择】下列选项中,关于 Java 的抽象类和抽象方法说法不正确的是()(选择一项) ``` A 抽象类和抽象方法都通过 abstract 关键字类修饰 B 抽象类中必须包含抽象方法 C 抽象方法只有方法声明,没有方法实现 D 子类如果不重写父类所有的抽象方法,则必须设置为抽象类 ``` 【编程】定义一个抽象类图形 Shape 类,由该派生出两个子类圆 Circle 类和矩形 Rectangle 类。Shape 里声明了抽象方法 area(),该方法分别在两个子类里得到实现。程序参考运行效果图如下: ``` 圆的面积为 38.465 矩形的面积为 30.0 ``` ``` public class Test { public static void main(String[] args) { // 1. 创建类的实例,并分别对圆的半径和矩形的长宽进行赋值 // 2. 调用 area() 方法,输出结果 } } public abstract class Shape { // 抽象方法 area() } public class Circle extends Shape { // 属性:圆的半径 r // 创建带参数构造方法以及无参构造方法 // 创建针对半径的赋值和取值方法 // 重写父类中 area() 方法 } public class Rectangle extends Shape { // 属性:矩形的长 length、宽 wide // 创建带参构造方法以及无参构造方法 // 创建针对长、宽的赋值和取值方法 // 重写父类的 area() 方法 } ```