Subtypes
Just as everything is a subtype of Object
, anything which
implements an interface is a subtype of that interface.
For the following code this means that any field or variable
which holds a Dog
can be assigned to an instance of Mutt
.
interface Dog {
void bark();
String fetch(String ball);
}
class Mutt implements Dog {
@Override
public void bark() {
System.out.println("Bark");
}
@Override
public String fetch(String ball) {
return ball + " (with drool)";
}
}
void main() {
Dog dog = new Mutt();
}
Through a Dog
variable you will be able to call any methods defined on the interface.
These will use the actual underlying implementation - in this case from Mutt
.
interface Dog {
void bark();
String fetch(String ball);
}
class Mutt implements Dog {
@Override
public void bark() {
System.out.println("Bark");
}
@Override
public String fetch(String ball) {
return ball + " (with drool)";
}
}
void main() {
Dog dog = new Mutt();
dog.bark();
System.out.println(dog.fetch("Ball"));
}