class SubClass extends SuperClass {...}
class Triangle {
public String whoIAm() { return "I am a triangle"; }
}
class EquilateralTriangle extends Triangle {
public String whoIReallyAm() { return "I am equilateral"; }
}
public class Test {
EquilateralTriangle equilateral = new EquilateralTriangle();
System.out.println(equilateral.whoIAm())
System.out.println(equilateral.whoIReallyAm());
}
Όταν μια μέθοδος γίνεται Override ο χρήστης μπορεί να προσθέσει πάνω από τον
ορισμό της μεθόδου το annotation . Αυτό γίνεται για να:
class Triangle {
public String whoIAm() { return "I am a triangle"; }
}
class EquilateralTriangle extends Triangle {
@Overrride
public String whοΙAm() { return "I am an equilateral triangle"; }
}
class Triangle {
public String whoIAm() { return "I am a triangle"; }
}
class EquilateralTriangle extends Triangle {
@Override
public String whοΙAm() {
return super.whoIAm() + " and an equilateral one too";
}
}
class Triangle {
private int base;
private int height;
public Triangle(int base, int height) {
// super(); <-- Εννοείται
this.base = base;
this.height = height;
}
}
class EquilateralTriangle extends Triangle {
public EquilateralTriangle(int base, int height) {
super(base, height); // Εδω η κλήση της super είναι απαραίτητη
}
}
abstract class Shape {
private int numberOfVertices;
public Shape(int numberOfVertices) {
this.numberOfVertices = numberOfVertices;
}
public int getNumberOfVertices() {
return this.numberOfVertices;
}
public abstract double area();
}
class triangle extends Shape {
private int base;
private int height;
public Triangle(int base, int height) {
super(3)
this.base = base;
this.height = height;
}
@Override
public double area() {
return (base * height) / 2.0;
}
}
class square extends Shape {
private int edge;
public Square(int edge) {
super(4);
this.edge = edge;
}
@Override
public double area() {
return edge * edge;
}
}
Ομοιότητες με αφηρημένες κλάσεις
Διαφορές με αφηρημένες κλάσεις:
abstract class Shape {
private int numberOfVertices;
public Shape(int numberOfVertices) {
this.numberOfVertices = numberOfVertices;
}
public int getNumberOfVertices() {
return numberOfVertices;
}
}
interface CalculableArea() {
double area();
}
public class Triangle extends Shape implements CalculableArea {
private int base;
private int height;
public Triangle(int base, int height) {
super(3);
this.base = base;
this.height = height;
}
@Override
public double area() {
return (base * height) / 2.0;
}
}