abstract class Figure {
double dim1;
double dim2;
Figure(double a, double b) {
dim1 = a;
dim2 = b;
}
// area is now an abstract method
abstract double area();
}
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
[]) { // Figure f = new Figure(10, 10); // illegal now
Triangle t = new Triangle(10, 8);
Figure figref; // this is OK, no object is created
figref = r;
System.
out.
println("Area is " + figref.
area()); figref = t;
System.
out.
println("Area is " + figref.
area()); }
}
YWJzdHJhY3QgY2xhc3MgRmlndXJlIHsgCmRvdWJsZSBkaW0xOyAKZG91YmxlIGRpbTI7IApGaWd1cmUoZG91YmxlIGEsIGRvdWJsZSBiKSB7IApkaW0xID0gYTsgCmRpbTIgPSBiOyAKfSAKLy8gYXJlYSBpcyBub3cgYW4gYWJzdHJhY3QgbWV0aG9kIAphYnN0cmFjdCBkb3VibGUgYXJlYSgpOyAKfQpjbGFzcyBSZWN0YW5nbGUgZXh0ZW5kcyBGaWd1cmUgeyAKUmVjdGFuZ2xlKGRvdWJsZSBhLCBkb3VibGUgYikgeyAKc3VwZXIoYSwgYik7IAp9IAovLyBvdmVycmlkZSBhcmVhIGZvciByZWN0YW5nbGUgCmRvdWJsZSBhcmVhKCkgeyAKU3lzdGVtLm91dC5wcmludGxuKCJJbnNpZGUgQXJlYSBmb3IgUmVjdGFuZ2xlLiIpOyAKcmV0dXJuIGRpbTEgKiBkaW0yOyAKfSAKfQoKY2xhc3MgVHJpYW5nbGUgZXh0ZW5kcyBGaWd1cmUgeyAKVHJpYW5nbGUoZG91YmxlIGEsIGRvdWJsZSBiKSB7IApzdXBlcihhLCBiKTsgCn0gCi8vIG92ZXJyaWRlIGFyZWEgZm9yIHJpZ2h0IHRyaWFuZ2xlIApkb3VibGUgYXJlYSgpIHsgClN5c3RlbS5vdXQucHJpbnRsbigiSW5zaWRlIEFyZWEgZm9yIFRyaWFuZ2xlLiIpOyAKcmV0dXJuIGRpbTEgKiBkaW0yIC8gMjsgCn0gCn0KCmNsYXNzIEFic3RyYWN0QXJlYXMgeyAKcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgeyAKLy8gRmlndXJlIGYgPSBuZXcgRmlndXJlKDEwLCAxMCk7IC8vIGlsbGVnYWwgbm93IApSZWN0YW5nbGUgciA9IG5ldyBSZWN0YW5nbGUoOSwgNSk7IApUcmlhbmdsZSB0ID0gbmV3IFRyaWFuZ2xlKDEwLCA4KTsgCkZpZ3VyZSBmaWdyZWY7IC8vIHRoaXMgaXMgT0ssIG5vIG9iamVjdCBpcyBjcmVhdGVkIApmaWdyZWYgPSByOyAKU3lzdGVtLm91dC5wcmludGxuKCJBcmVhIGlzICIgKyBmaWdyZWYuYXJlYSgpKTsgCmZpZ3JlZiA9IHQ7IApTeXN0ZW0ub3V0LnByaW50bG4oIkFyZWEgaXMgIiArIGZpZ3JlZi5hcmVhKCkpOyAKfSAKfQ==