java⽤abstract定义的类_Java抽象(abstract)类详解
Java 语⾔提供了两种类,分别为具体类和抽象类。前⾯学习接触的类都是具体类。这⼀节介绍⼀下抽象类。
在⾯向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是⽤来描绘对象的,如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,那么这样的类称为抽象类。
在 Java 中抽象类的语法格式如下:
class {
(parameter-iist);
}
其中,abstract 表⽰该类或该⽅法是抽象的;class_name 表⽰抽象类的名称;method_name 表⽰抽象⽅法名称,parameter-list 表⽰⽅法参数列表。
如果⼀个⽅法使⽤ abstract 来修饰,则说明该⽅法是抽象⽅法,抽象⽅法只有声明没有实现。需要注意的是 abstract 关键字只能⽤于普通⽅法,不能⽤于 static ⽅法或者构造⽅法中。
抽象⽅法的 3 个特征如下:
抽象⽅法没有⽅法体
抽象⽅法必须存在于抽象类中
⼦类重写⽗类时,必须重写⽗类所有的抽象⽅法
注意:在使⽤ abstract 关键字修饰抽象⽅法时不能使⽤ private 修饰,因为抽象⽅法必须被⼦类重写,⽽如果使⽤了 private 声明,则⼦类是⽆法重写的。
抽象类的定义和使⽤规则如下:
抽象类和抽象⽅法都要使⽤ abstract 关键字声明。
如果⼀个⽅法被声明为抽象的,那么这个类也必须声明为抽象的。⽽⼀个抽象类中,可以有 0~n 个抽象⽅法,以及 0~n 个具体⽅法。
抽象类不能实例化,也就是不能使⽤ new 关键字创建对象。
例 1
不同⼏何图形的⾯积计算公式是不同的,但是它们具有的特性是相同的,都具有长和宽这两个属性,也都具有⾯积计算的⽅法。那么可以定义⼀个抽象类,在该抽象类中含有两个属性(width 和 height)和⼀个抽象⽅法 area( ),具体步骤如下。
1)⾸先创建⼀个表⽰图形的抽象类 Shape,代码如下所⽰。
public abstract class Shape {
public int width; // ⼏何图形的长
public int height; // ⼏何图形的宽
public Shape(int width, int height) {
this.width = width;
this.height = height;
}
public abstract double area(); // 定义抽象⽅法,计算⾯积
}
2)定义⼀个正⽅形类,该类继承⾃形状类 Shape,并重写了 area( ) 抽象⽅法。正⽅形类的代码如下:
public class Square extends Shape {
public Square(int width, int height) {
super(width, height);
}
抽象类的使用// 重写⽗类中的抽象⽅法,实现计算正⽅形⾯积的功能
@Override
public double area() {
return width * height;
}
}
3)定义⼀个三⾓形类,该类与正⽅形类⼀样,需要继承形状类 Shape,并重写⽗类中的抽象⽅法 area()。三⾓形类的代码实现如下:
public class Triangle extends Shape {
public Triangle(int width, int height) {
super(width, height);
}
// 重写⽗类中的抽象⽅法,实现计算三⾓形⾯积的功能
@Override
public double area() {
return 0.5 * width * height;
}
}
4)最后创建⼀个测试类,分别创建正⽅形类和三⾓形类的对象,并调⽤各类中的 area() ⽅法,打印出不同形状的⼏何图形的⾯积。测试类的代码如下:
public class ShapeTest {
public static void main(String[] args) {
Square square = new Square(5, 4); // 创建正⽅形类对象
System.out.println("正⽅形的⾯积为:" + square.area());
Triangle triangle = new Triangle(2, 5); // 创建三⾓形类对象
System.out.println("三⾓形的⾯积为:" + triangle.area());
}
}
在该程序中,创建了 4 个类,分别为图形类 Shape、正⽅形类 Square、三⾓形类 Triangle 和测试类 ShapeTest。其中图形类 Shape 是⼀个抽象类,创建了两个属性,分别为图形的长度和宽度,并通过构造⽅法 Shape( ) 给这两个属性赋值。
在 Shape 类的最后定义了⼀个抽象⽅法 area( ),⽤来计算图形的⾯积。在这⾥,Shape 类只是定义了计算图形⾯积的⽅法,⽽对于如何计算并没有任何限制。也可以这样理解,抽象类 Shape 仅定义了⼦类的⼀般形式。
正⽅形类 Square 继承抽象类 Shape,并实现了抽象⽅法 area( )。三⾓形类 Triangle 的实现和正⽅形类相同,这⾥不再介绍。
在测试类 ShapeTest 的 main( ) ⽅法中,⾸先创建了正⽅形类和三⾓形类的实例化对象 square 和 triangle,然后分别调⽤ area( ) ⽅法实现了⾯积的计算功能。
5)运⾏该程序,输出的结果如下:
正⽅形的⾯积为:20.0
三⾓形的⾯积为:5.0

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。