// Informing = can describe information about itself
public interface Informing {
// this method is used for describing
String retrieveInfo();
}
retrieveInfo()
.// Informing = can describe information about itself
public interface Informing {
// this method is used for describing
String retrieveInfo();
}
interface
) je seznam metod (budoucích) tříd objektů.Říkáme, že třída implementuje rozhraní, pokud obsahuje všechny metody, které jsou daným rozhraním předepsány.
class
je interface
.Všechny metody v rozhraní přebírají viditelnost z celého rozhraní:
public
(není to vůbec velká chyba tak dělat stále).// Informing = can describe information about itself
public interface Informing {
// this method is used for describing
String retrieveInfo();
}
Person
a Donkey
implementují rozhraní Informing
:public class Person implements Informing {
public String retrieveInfo() {
return "People are clever.";
}
}
public class Donkey implements Informing {
public String retrieveInfo() {
return "Donkeys are simple.";
}
}
public void printInfo(Informing informing) {
System.out.println("Now you learn the truth!");
System.out.println(informing.retrieveInfo());
}
...
Person p = new Person();
printInfo(p);
...
Donkey d = new Donkey();
printInfo(d);
public class Person implements Informing {
public String retrieveInfo() {
return "People are clever.";
}
public void emptyMethod() { }
}
...
Informing i = new Person();
i.retrieveInfo(); // ok
i.emptyMethod(); // cannot be done
i
může používat pouze metody definované v rozhraní (ztrácí metody v třídě Person
).public interface Printer {
void printDocument(File file);
File[] getPendingDocuments();
}
@Override
@Override
:public class Person implements Informing {
@Override
public String retrieveInfo() {
return "People are clever.";
}
}
Person
implementuje 2 rozhraní:public interface Informing { String retrieveInfo(); }
public interface Screaming { String scream(); }
public class Person implements Informing, Screaming {
public String retrieveInfo() { ... }
public String scream() { ... }
}
public interface Informing { String retrieveInfo(); }
public interface Screaming { String retrieveInfo(); }
public class Person implements Informing, Screaming {
@Override
public String retrieveInfo() { ... }
}
public interface Informing { String retrieveInfo(); }
public interface Screaming { void retrieveInfo(); }
public class Person implements Informing, Screaming { ... }
Person p = new Person();
// do we call method returning void or
// string and we ignore the result?
p.retrieveInfo();
java.lang.Cloneable
, java.io.Serializable
./