Java 29.10.2023
This commit is contained in:
		
							
								
								
									
										106
									
								
								Java/Java.md
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								Java/Java.md
									
									
									
									
									
								
							@@ -406,6 +406,58 @@ public interface Swimmable {
 | 
				
			|||||||
class Duck implements Swimmable {}
 | 
					class Duck implements Swimmable {}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Могут быть статические и приватные (доступные только внутри интерфейса) методы и константы
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					public interface Foo {
 | 
				
			||||||
 | 
					    int VALUE = 5; // Подразумевается public static final т.е. публичная константная
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    static void foo() {
 | 
				
			||||||
 | 
					        System.out.println("Foo");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private int bar(int a, int b) {
 | 
				
			||||||
 | 
					        return a + b;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Bar implements Foo {}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Интерфейсы могут расширять друг друга
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					interface Foo {
 | 
				
			||||||
 | 
					    void foo();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface Bar extends Foo {
 | 
				
			||||||
 | 
					    default void bar() {
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Baz implements Bar {
 | 
				
			||||||
 | 
					    public void foo() {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Интерфейсы могут быть вложены в классы
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					class Printer {
 | 
				
			||||||
 | 
					    interface Printable {
 | 
				
			||||||
 | 
					        void print();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Journal implements Printer.Printable {
 | 
				
			||||||
 | 
					    public void print() {
 | 
				
			||||||
 | 
					        System.out.println("Priniting journal");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Классы обёртки
 | 
					### Классы обёртки
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*Обёртка* - класс, хранящий внутри значение примитива. Эти классы содержат полезные методы и являются не изменяемыми
 | 
					*Обёртка* - класс, хранящий внутри значение примитива. Эти классы содержат полезные методы и являются не изменяемыми
 | 
				
			||||||
@@ -657,3 +709,57 @@ public class Main {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Generic
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					class Account<T> { // Account<String> account = new Account<String>("FooBar");
 | 
				
			||||||
 | 
					    private T id;
 | 
				
			||||||
 | 
					    public int sum;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Account(T id, int sum) {
 | 
				
			||||||
 | 
					        this.id = id;
 | 
				
			||||||
 | 
					        this.sum = sum;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public T getId() {
 | 
				
			||||||
 | 
					        return id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Printer {
 | 
				
			||||||
 | 
					    public static <T> void print(T[] items) { // Вызывать так: Printer.<String>print(new String[]{"a", "b"});
 | 
				
			||||||
 | 
					        for(T item: items) {
 | 
				
			||||||
 | 
					            System.out.println(item);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface Acountable {
 | 
				
			||||||
 | 
					    String getId();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Account2 implements Acountable {
 | 
				
			||||||
 | 
					    String id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public <T>Account2(T id) { // Account account = new Account(5);
 | 
				
			||||||
 | 
					        this.id = id.toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getId() {
 | 
				
			||||||
 | 
					        return id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Transaction<T extends Account> { // T может быть только наследником Account
 | 
				
			||||||
 | 
					    T account;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Transaction2<T extends Acountable> { // T имплементирует Acountable
 | 
				
			||||||
 | 
					    T account;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Transaction3<T extends Account & Accountable> { // T имплементирует Accountable и наследует Account
 | 
				
			||||||
 | 
					    T account;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user