49.44K
Категория: ПрограммированиеПрограммирование

Интерфейсы. 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();
}
English     Русский Правила