【发布时间】:2015-06-04 15:51:42
【问题描述】:
希望任何人都可以提供帮助,我正在学习 Java,与本论坛中的其他人一样,我想我也是编程新手。
我遇到了关于抽象类和方法的一章,但并不完全理解它们的用途和原因,我想我会从有经验的程序员那里得到解释。
下面是我一直在编写的示例代码,在本书的帮助下,我不确定为什么在 Dims 类中,当每个子类使用一个区域时,我必须有抽象双区域()反正方法,还是调用超类的area方法,为什么一定要有重写的方法?
// Using abstract methods and classes
package Training2;
abstract class Dims {
double dim1;
double dim2;
Dims(double a, double b) {
dim1 = a;
dim2 = b;
}
// area is now an abstract method
abstract double area();
}
class Rectangles extends Dims {
Rectangles(double a, double b) {
super(a, b);
}
// Override area for Rectangles
double area() {
System.out.println("Inside Area for Rectangle.");
return dim1 * dim2;
}
}
class Triangles extends Dims {
Triangles(double a, double b) {
super(a, b);
}
// Override area for right Triangles
double area() {
System.out.println("Inside Area for Triangle.");
return dim1 * dim2 /2;
}
}
public class AbstractAreas {
public static void main(String args[]) {
// Dims d = new Dims(10, 10); // Illegal now
Rectangles r = new Rectangles(9, 5);
Triangles t = new Triangles(10, 8);
Dims dimref; // This is OK, no object is created
dimref = r;
System.out.println("Area is " + dimref.area());
dimref = t;
System.out.println("Area is " + dimref.area());}
}
抱歉,我真的需要一些指导。
提前致谢。
【问题讨论】:
标签: java class methods overriding abstract