我正在使用《Java: The Complete Reference》这本书学习Java。目前,我正在学习抽象类的主题。
请注意:stackoverflow上有类似的问题。我搜索了它们,但是我无法理解这个概念。
如果我运行下面的程序,它会产生正确的输出,但我不理解这个概念。
以下程序可以获得所需的输出,那么在这里抽象类的引用变量的需要是什么?在没有抽象类的引用变量的情况下,我也可以得到输出。
首先,我运行了下面的程序并获得了所需的输出。
它也产生了与第一个程序相同的输出。
有人能解释一下使用抽象类引用调用“area方法”的必要性吗?
请注意:stackoverflow上有类似的问题。我搜索了它们,但是我无法理解这个概念。
如果我运行下面的程序,它会产生正确的输出,但我不理解这个概念。
以下程序可以获得所需的输出,那么在这里抽象类的引用变量的需要是什么?在没有抽象类的引用变量的情况下,我也可以得到输出。
首先,我运行了下面的程序并获得了所需的输出。
abstract class Figure {
double dim1;
double dim2;
Figure(double a, double b) {
dim1 = a;
dim2 = b;
}
// area is now an an abstract method
abstract double area();
}
class Rectangle extends Figure {
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 Figure {
Triangle(double a, double b) {
super(a, b);
}
// override area for right triangle
double area() {
System.out.println("Inside Area for Triangle.");
return dim1 * dim2 / 2;
}
}
class AbstractAreas {
public static void main(String args[]) {
Rectangle r = new Rectangle(9, 5);
Triangle t = new Triangle(10, 8);
Figure figref;
figref = r;
System.out.println("Area is " + figref.area());
figref = t;
System.out.println("Area is " + figref.area());
}
}
我尝试了以下代码,没有创建/使用抽象类引用。
class AbstractAreas {
public static void main(String args[]) {
Rectangle r = new Rectangle(9, 5);
Triangle t = new Triangle(10, 8);
// Figure figref;
// figref = r;
System.out.println("Area is " + r.area());
// figref = t;
System.out.println("Area is " + t.area());
}
}
它也产生了与第一个程序相同的输出。
有人能解释一下使用抽象类引用调用“area方法”的必要性吗?