我们可以在 Java 中创建一个抽象类的对象吗?
不可以,我们不能创建一个抽象类的对象,但是我们可以创建一个抽象类的引用变量。引用变量用于引用派生类(抽象类的子类)的对象。
抽象类意味着隐藏实现,并向用户显示函数定义被称为抽象类。如果我们知道要求和部分实现,Java 抽象类可以拥有实现默认行为的实例方法,我们可以使用抽象类。
示例
abstract class Diagram {
double dim1;
double dim2;
Diagram(double a, double b) {
dim1 = a;
dim2 = b;
}
// area is now an abstract method
abstract double area();
}
class Rectangle extends Diagram {
Rectangle(double a, double b) {
super(a, b);
}
// override area for rectangle
double area() {
System.out.println("Inside Area for Rectangle.");
return dim1 * dim2;
}
}
class Triangle extends Diagram {
Triangle(double a, double b) {
super(a, b);
}
// override area for triangle
double area() {
System.out.println("Inside Area for Triangle.");
return dim1 * dim2 / 2;
}
}
public class Test {
public static void main(String args[]) {
// Diagram d = new Diagram(10, 10); // illegal now
Rectangle r = new Rectangle(9, 5);
Triangle t = new Triangle(10, 8);
Diagram diagRef; // This is OK, no object is created
diagRef = r;
System.out.println("Area of Rectangle is: " + diagRef.area());
diagRef = t;
System.out.println("Area of Triangle is:" + diagRef.area());
}
}在上面的示例中,我们无法创建类型为 Diagram 的对象,但是我们可以创建类型为 Diagram 的引用变量。在这里,我们创建了一个类型为 Diagram 的引用变量,Diagram 类引用变量用于引用类 Rectangle 和 Triangle 的对象。
输出
Inside Area for Rectangle. Area of Rectangle is: 45.0 Inside Area for Triangle. Area of Triangle is:40.0
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
JavaScript
PHP