Similar presentations:
Интерфейсы. Public class program
1.
Интерфейсы2.
public class Program{public static void main(String[] args) {
Book b1 = new Book("Java. Complete Referense.", "H. Shildt");
b1.print();
}
}
Интерфейс
Определяет некоторый функционал, не имеющий
конкретной реализации, который затем реализуют
классы, применяющие эти интерфейсы.
interface Printable{
void print();
}
class Book implements Printable{
String name;
String author;
Book(String name, String author){
this.name = name;
this.author = author;
}
@Override
public void print() {
System.out.printf("%s (%s) \n", name, author);
}
}
3.
Множественная реализация интерфейсовinterface Printable {
void print();
}
interface Searchable {
void search();
}
class Book implements Printable, Searchable{
@Override
public void print() {
}
@Override
public void search() {
}
}
4.
Преобразование типовclass Journal implements Printable {
private String name;
Journal(String name){
this.name = name;
}
public class Program{
public static void main(String[] args) {
Printable printable = new Book( "Java. Complete Reference",
"H. Shildt");
printable.print();
String getName(){
return name;
}
@Override
public void print() {
System.out.println(name);
}
}
// Java. Complete Reference (H. Shildt)
printable = new Journal("Foreign Policy");
printable.print();
}
}
// Foreign Policy
5.
Интерфейсы в преобразованиях типовpublic class Program {
public static void main(String[] args) {
Printable p = new Journal("Foreign Affairs");
p.print(); // Интерфейс не имеет метода getName, необходимо явное приведение
String name = ((Journal) p).getName();
System.out.println(name);
}
}
6.
Методы по умолчанию*interface Printable {
default void print(){
System.out.println("Undefined printable");
}
}
class Book implements Printable {
}
class Main {
public static void main(String[] args) {
Printable book = new Book();
book.print(); // Undefined printable
}
}
*JAVA > 8
7.
Анонимные классыinterface Printable {
void print();
}
class Main {
public static void main(String[] args) {
Printable book = new Printable() {
@Override
public void print() {
System.err.println("hello");
}
};
}
}
8.
Лямбдыclass Main {
public static void main(String[] args) {
Printable book = new Printable() {
@Override
public void print() {
System.err.println("hello");
}
};
class Main {
public static void main(String[] args) {
printSomething(() -> System.err.println("hello"));
}
static void printSomething(Printable printable) {
printable.print();
}
printSomething(book);
}
}
static void printSomething(Printable printable) {
printable.print();
}
}
9.
Наследованиеinterface BookPrintable extends Printable{
void paint();
}