SlideShare une entreprise Scribd logo
1  sur  55
2. Объекты
Программирование на Java
Федор Лаврентьев
МФТИ, 2016
Методы
Методы класса Object
• equals(), hashCode()
• clone()
• toString()
• finalize()
• wait(), notify(), notifyAll()
• getClass()
Декларация метода
class FileReader {
public String readEntireFile(String path, String name)
throws IOException;
Модификатор доступа
Имя
Класс-владелец
Список аргументов
Тип возвращаемого значения
Список исключений
Сигнатура метода
class FileReader {
public String readEntireFile(String path, String name)
throws IOException;
• Сигнатура = имя + список аргументов
Перегрузка метода
public String do() { ... }
public String do(String s) { ... }
public int do(Object obj) { ... }
public int do(int i) { ... }
public long do(int i) { ... }
Перегрузка метода
public String do() { ... }
public String do(String s) { ... }
public int do(Object obj) { ... }
public int do(int i) { ... }
public long do(int i) { ... } // WRONG!
Перегрузка метода - пример
public String do(String s) { ... }
public String do(int i) {
return do(Integer.toString(i));
}
public String do() {
return do(“Just do it”);
}
Инициализация объекта
Конструктор объекта
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public Animal() {
this.name = “Untitled animal”;
}
}
Animal a = new Animal(“Monkey”);
Конструктор объекта
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public Animal() {
this(“Untitled animal”);
}
}
Animal a = new Animal(“Monkey”);
Конструктор по умолчанию
public class Dog {
String name;
String breed;
int age;
}
Dog dog = new Dog();
System.out.println(dog.name);
dog.name = “Pooker”;
Конструктор по умолчанию
public class Dog {
String name = null;
String breed = null;
int age = 0;
public Dog() { /* do nothing */ }
}
Dog dog = new Dog();
System.out.println(dog.name); // null
dog.name = “Pooker”;
Значения по умолчанию
public class Dog {
String name = ”Nameless”;
String breed = “Mongrel”;
int age = 1;
}
Dog dog = new Dog();
System.out.println(dog.name); // ”Nameless”
System.out.println(dog.age); // 1
Final поля
public class Dog {
final String name;
final String breed;
}
Dog dog = new Dog();
dog.name = “Pooker”;
dog.breed = “Bloodhound”;
Final поля
public class Dog {
final String name;
final String breed;
} // WRONG!
Dog dog = new Dog(); // WRONG!
dog.name = “Pooker”; // WRONG!
dog.breed = “Bloodhound”; // WRONG!
Final поля
public class Dog {
final String name;
final String breed;
public Dog(String name, String breed) {
this.name = name;
this.breed = breed;
}
}
Dog dog = new Dog(“Pooker”, “Bloodhound”);
Final поля
pulic class Dog {
final String name;
final String breed;
public Dog(String name, String breed) {
this.name = name;
this.breed = breed;
}
public Dog(String name) {
this(name, “Mongrel”);
}
public Dog() {
this(“Nameless”);
}
}
Final объекты
class IntWrapper {
int i;
IntWrapper(int i) { this.i = i };
}
class FinalIntWrapper {
final IntWrapper wrapper = new IntWrapper(1);
...
wrapper = new IntWrapper(2);
}
Final объекты
class IntWrapper {
int i;
IntWrapper(int i) { this.i = i };
}
class FinalIntWrapper {
final IntWrapper wrapper = new IntWrapper(1);
...
wrapper = new IntWrapper(2); // WRONG
}
Final объекты
class IntWrapper {
int i;
IntWrapper(int i) { this.i = i };
}
class FinalIntWrapper {
final IntWrapper wrapper = new IntWrapper(1);
...
wrapper = new IntWrapper(2); // WRONG
wrapper.i = 3;
}
Final объекты
class IntWrapper {
int i;
IntWrapper(int i) { this.i = i };
}
class FinalIntWrapper {
final IntWrapper wrapper = new IntWrapper(1);
...
wrapper = new IntWrapper(2); // WRONG
wrapper.i = 3; // but right o_O
}
Стек инициализации объектов
class Tail {
int length;
Tail(int length) {
this.length = length;
}
}
class Head {
int teeth;
Head(boolean hasTeeth) {
teeth = hasTeeth ? DEFAULT_TEETH_COUNT : 0;
}
}
class Snake {
Tail tail;
Head head;
Snake(hasTeeth, length) {
this.tail = new Tail(length);
this.head = new Head(head);
}
}
Стек инициализации объектов
class Tail {
int length;
Tail(int length) { // 3
this.length = length; // 4
} // 5 – tail ready
}
class Head {
int teeth;
Head(boolean hasTeeth) { // 7
teeth = hasTeeth ? DEFAULT_TEETH_COUNT : 0; // 8
} // 9 – head ready
}
class Snake {
Tail tail;
Head head;
Snake(hasTeeth, length) { // 1
this.tail = new Tail(length); // 2
this.head = new Head(head); // 6
} // 10 – snake ready
}
Ловушка – незавершенная инициализация
class TeethCollector { ...
static void collect(Snake snake) { ... };
}
class Snake { ...
Snake(int length, boolean hasTeeth) {
tail = new Tail(length);
TeethCollector.collect(this);
head = new Head(hasTeeth);
}
}
Ловушка – незавершенная инициализация
class TeethCollector { ...
static void collect(Snake snake) { ... };
}
class Snake { ...
Snake(int length, boolean hasTeeth) {
tail = new Tail(length);
TeethCollector.collect(this); // WRONG!
head = new Head(hasTeeth);
}
}
Статические поля и методы
class Integer {
static final int MAX_VALUE = 2147483647;
static final String VALUE_NAME = “int32”;
static String toString(int i) { ... };
}
class Foo { ...
String s = Integer.VALUE_NAME + “ ” +
Integer.toString(Integer.MAX_VALUE));
}
Ловушка – порядок инициализации
class Utils {
static final String NAME = buildName(“a”);
static final String PREFIX = “utils_”;
static String buildName(String s) {
return PREFIX + s;
}
}
Ловушка – порядок инициализации
class Utils {
static final String NAME = buildName(“a”); // 1
static final String PREFIX = “utils_”; // 5
static String buildName(String s) { // 2
return PREFIX + s; // 3
} // 4
}
Ловушка – порядок инициализации
class Utils {
static final String NAME = buildName(“a”); // 1
static final String PREFIX = “utils_”; // 5
static String buildName(String s) { // 2
return PREFIX + s; // PREFIX = null! // 3
} // 4
}
Ловушка – цикл инициализации классов
class Foo {
static Bar BAR = new Bar();
static String NAME = “n”;
}
class Bar {
static String s = Nja.default();
}
class Nja {
static String default() { return Foo.NAME }
}
Ловушка – цикл инициализации классов
class Foo {
static Bar BAR = new Bar(); // 1
static String NAME = “n”; // 4
}
class Bar {
static String s = Nja.default(); // 2
}
class Nja {
static String default() { return Foo.NAME } // 3
}
Статические блоки инициализации
class NamedPerson {
static final String ABC;
static {
StringBuilder sb = new StringBuilder();
for (char c = ‘a’; c <= ‘z’; ++c) {
sb.append(c);
}
ABC = sb.toString();
}
}
Статические блоки инициализации не нужны
class NamedPerson {
static final String ABC = buildAbc();
static String buildAbc() {
StringBuilder sb = new StringBuilder();
for (char c = ‘a’; c <= ‘z’; ++c) {
sb.append(c);
}
return sb.toString();
}
}
Удаление объекта
Область видимости переменной
public String swarmBark() {
StringBuilder sb = new StringBuilder();
Dog pooker = new Dog(“pooker”);
sb.append(pooker.bark());
for (int i = 0; i < 10; ++i) {
Dog replier = new Dog(“Dog “ + i);
sb.append(replier.bark());
}
return sb.toString();
}
Деструкторы в Java
• Деструкторов нет
• Реакции на область видимости нет
• Есть сборщик мусора
Сборка мусора
• Терпи, пока память есть
• Найди* все** недостижимые*** объекты
• Вызови для каждого object.finalize()
• Удали их из памяти
Освобождение ресурсов
public void printFile(String fileName) [...] {
BufferedReader reader = new BufferedReader(
new FileReader(fileName));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}
Освобождение ресурсов (плохой пример)
public void printFile(String fileName) [...] {
BufferedReader reader = new BufferedReader(
new FileReader(fileName));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close(); // ALL WRONG
}
Исключения
Исключения
public int modulo(int a, int b) {
int r = a % b;
if (r > 0 && a < 0) {
r -= n;
}
}
Исключения
public int modulo(int a, int b) {
// what if b == 0 ?
int r = a % b;
if (r > 0 && a < 0) {
r -= n;
}
}
Исключения
public int modulo(int a, int b) {
if (b == 0) {
throw new Exception(“Division by zero”);
}
int r = a % b;
if (r > 0 && a < 0) {
r -= n;
}
}
Исключения
public int modulo(int a, int b) {
if (b == 0) {
throw new DivisionByZeroException();
}
int r = a % b;
if (r > 0 && a < 0) {
r -= n;
}
}
Исключения
public int modulo(int a, int b)
throws DivisionByZeroException {
if (b == 0) {
throw new DivisionByZeroException();
}
int r = a % b;
if (r > 0 && a < 0) {
r -= n;
}
}
Иерархия исключений
http://www.ufthelp.com/2014/11/exception-handling-in-java.html
Ловля исключений
void touch(String name) throws IOException {...}
void refreshFile(String name) {
try {
touch(name);
} catch (FileNotFoundException e) {
// It’s ok, do nothing
} catch (EOFException|SyncFailedException e) {
e.printStackTrace();
} catch (IOException e) {
throw new IllegalStateException(e);
}
}
Finally
public void printFile(String fileName) [...] {
BufferedReader reader = new BufferedReader(
new FileReader(fileName));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}
Finally
public void printFile(String fileName) [...] {
BufferedReader reader = null;
try {
reader = new BufferedReader(
new FileReader(fileName));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} finally {
reader.close();
}
}
Finally
public void printFile(String fileName)
throws IOException {
BufferedReader reader = null;
try {
reader = new BufferedReader(
new FileReader(fileName));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} finally {
if (reader != null) reader.close();
}
}
Try-with-resources
public void printFile(String fileName)
throws IOException {
try (BufferedReader reader =
new BufferedReader(
new FileReader(fileName))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
Try-with-resources
try (AutoCloseable closeable = ...) {
// Logic
} catch (Exception e) {
// Handle exceptions
} finally {
// Finish him
}
Finally и return
public String kickStudentsBrain(String s) {
try {
return s.toLowerCase();
} finally {
throw new IllegalStateException();
}
}
Finally и return
public String smashStudentsBrain(String s) {
try {
return s.toLowerCase();
} finally {
return s.toUpperCase();
}
}

Contenu connexe

Tendances

Декораторы в Python и их практическое использование
Декораторы в Python и их практическое использование Декораторы в Python и их практическое использование
Декораторы в Python и их практическое использование Sergey Schetinin
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPython Meetup
 
Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Roman Brovko
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture libraryMERA_school
 
Лекция 1. Начало.
Лекция 1. Начало.Лекция 1. Начало.
Лекция 1. Начало.Roman Brovko
 
DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6Dmitry Soshnikov
 
Как программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногуКак программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногуAndreyGeonya
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклыSergey Nemchinsky
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collectionsMERA_school
 
Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Roman Brovko
 
Лекция 4. Строки, байты, файлы и ввод/вывод.
 Лекция 4. Строки, байты, файлы и ввод/вывод. Лекция 4. Строки, байты, файлы и ввод/вывод.
Лекция 4. Строки, байты, файлы и ввод/вывод.Roman Brovko
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
 
Монады для барабанщиков. Антон Холомьёв
Монады для барабанщиков. Антон ХоломьёвМонады для барабанщиков. Антон Холомьёв
Монады для барабанщиков. Антон ХоломьёвЮрий Сыровецкий
 
Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.Roman Brovko
 
Отладка в Erlang, trace/dbg
Отладка в Erlang, trace/dbgОтладка в Erlang, trace/dbg
Отладка в Erlang, trace/dbgYuri Zhloba
 
Лекция 8. Итераторы, генераторы и модуль itertools.
 Лекция 8. Итераторы, генераторы и модуль itertools. Лекция 8. Итераторы, генераторы и модуль itertools.
Лекция 8. Итераторы, генераторы и модуль itertools.Roman Brovko
 
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Dmitry Stropalov
 

Tendances (19)

Декораторы в Python и их практическое использование
Декораторы в Python и их практическое использование Декораторы в Python и их практическое использование
Декораторы в Python и их практическое использование
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
 
Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.Лекция 5. Встроенные коллекции и модуль collections.
Лекция 5. Встроенные коллекции и модуль collections.
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture library
 
Лекция 1. Начало.
Лекция 1. Начало.Лекция 1. Начало.
Лекция 1. Начало.
 
DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6
 
Как программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногуКак программировать на JavaScript и не выстрелить себе в ногу
Как программировать на JavaScript и не выстрелить себе в ногу
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
 
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014
 
10. java lecture generics&collections
10. java lecture generics&collections10. java lecture generics&collections
10. java lecture generics&collections
 
Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.Лекция 2. Всё, что вы хотели знать о функциях в Python.
Лекция 2. Всё, что вы хотели знать о функциях в Python.
 
Лекция 4. Строки, байты, файлы и ввод/вывод.
 Лекция 4. Строки, байты, файлы и ввод/вывод. Лекция 4. Строки, байты, файлы и ввод/вывод.
Лекция 4. Строки, байты, файлы и ввод/вывод.
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 
Монады для барабанщиков. Антон Холомьёв
Монады для барабанщиков. Антон ХоломьёвМонады для барабанщиков. Антон Холомьёв
Монады для барабанщиков. Антон Холомьёв
 
Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.Лекция 3. Декораторы и модуль functools.
Лекция 3. Декораторы и модуль functools.
 
Отладка в Erlang, trace/dbg
Отладка в Erlang, trace/dbgОтладка в Erlang, trace/dbg
Отладка в Erlang, trace/dbg
 
Лекция 8. Итераторы, генераторы и модуль itertools.
 Лекция 8. Итераторы, генераторы и модуль itertools. Лекция 8. Итераторы, генераторы и модуль itertools.
Лекция 8. Итераторы, генераторы и модуль itertools.
 
Kotlin with API tests
Kotlin with API testsKotlin with API tests
Kotlin with API tests
 
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)
 

En vedette

Programming Java - Lection 01 - Basics - Lavrentyev Fedor
Programming Java - Lection 01 - Basics - Lavrentyev FedorProgramming Java - Lection 01 - Basics - Lavrentyev Fedor
Programming Java - Lection 01 - Basics - Lavrentyev FedorFedor Lavrentyev
 
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev FedorProgramming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev FedorFedor Lavrentyev
 
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev FedorProgramming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev FedorFedor Lavrentyev
 
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...Fedor Lavrentyev
 
Programming Java - Lection 05 - Software Design - Lavrentyev Fedor
Programming Java - Lection 05 - Software Design - Lavrentyev FedorProgramming Java - Lection 05 - Software Design - Lavrentyev Fedor
Programming Java - Lection 05 - Software Design - Lavrentyev FedorFedor Lavrentyev
 
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev FedorProgramming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev FedorFedor Lavrentyev
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Fedor Lavrentyev
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Fedor Lavrentyev
 
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev FedorProgramming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev FedorFedor Lavrentyev
 
Nómina de trabajadores portuarios beneficiarios
Nómina de trabajadores portuarios beneficiariosNómina de trabajadores portuarios beneficiarios
Nómina de trabajadores portuarios beneficiariosAlejandro Rojas Muñoz
 
Formularios y contenedores
Formularios y contenedoresFormularios y contenedores
Formularios y contenedoresgerardd98
 

En vedette (13)

Programming Java - Lection 01 - Basics - Lavrentyev Fedor
Programming Java - Lection 01 - Basics - Lavrentyev FedorProgramming Java - Lection 01 - Basics - Lavrentyev Fedor
Programming Java - Lection 01 - Basics - Lavrentyev Fedor
 
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev FedorProgramming Java - Lection 03 - Classes - Lavrentyev Fedor
Programming Java - Lection 03 - Classes - Lavrentyev Fedor
 
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev FedorProgramming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
 
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
Industrial Programming Java - Lection Pack 02 - Distributed applications - La...
 
Programming Java - Lection 05 - Software Design - Lavrentyev Fedor
Programming Java - Lection 05 - Software Design - Lavrentyev FedorProgramming Java - Lection 05 - Software Design - Lavrentyev Fedor
Programming Java - Lection 05 - Software Design - Lavrentyev Fedor
 
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev FedorProgramming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
 
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
 
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
 
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev FedorProgramming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
Programming Java - Lection 04 - Generics and Lambdas - Lavrentyev Fedor
 
kevin
 kevin kevin
kevin
 
Nómina de trabajadores portuarios beneficiarios
Nómina de trabajadores portuarios beneficiariosNómina de trabajadores portuarios beneficiarios
Nómina de trabajadores portuarios beneficiarios
 
Estructura 7
Estructura 7Estructura 7
Estructura 7
 
Formularios y contenedores
Formularios y contenedoresFormularios y contenedores
Formularios y contenedores
 

Similaire à Programming Java - Lecture 02 - Objects - Lavrentyev Fedor

Kotlin для Android
Kotlin для AndroidKotlin для Android
Kotlin для AndroidKirill Rozov
 
Groovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всёмGroovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всёмRuslan Balkin
 
Statis code analysis
Statis code analysisStatis code analysis
Statis code analysischashnikov
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CГлеб Тарасов
 
[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...
[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...
[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...Provectus
 
Об особенностях использования значимых типов в .NET
Об особенностях использования значимых типов в .NETОб особенностях использования значимых типов в .NET
Об особенностях использования значимых типов в .NETAndrey Akinshin
 
Интерфейсы
ИнтерфейсыИнтерфейсы
ИнтерфейсыREX-MDK
 
C++ осень 2012 лекция 11
C++ осень 2012 лекция 11C++ осень 2012 лекция 11
C++ осень 2012 лекция 11Technopark
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?Vasil Remeniuk
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовAndrew Shitov
 
Ecma script 6 in action
Ecma script 6 in actionEcma script 6 in action
Ecma script 6 in actionYuri Trukhin
 
Solit 2014, EcmaScript 6 in Action, Трухин Юрий
Solit 2014, EcmaScript 6 in Action, Трухин Юрий Solit 2014, EcmaScript 6 in Action, Трухин Юрий
Solit 2014, EcmaScript 6 in Action, Трухин Юрий solit
 

Similaire à Programming Java - Lecture 02 - Objects - Lavrentyev Fedor (20)

Kotlin
KotlinKotlin
Kotlin
 
Kotlin для Android
Kotlin для AndroidKotlin для Android
Kotlin для Android
 
Groovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всёмGroovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всём
 
Xtend
XtendXtend
Xtend
 
Statis code analysis
Statis code analysisStatis code analysis
Statis code analysis
 
Bytecode
BytecodeBytecode
Bytecode
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
 
[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...
[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...
[Expert Fridays] Java MeetUp - Борис Ташкулов (Teamlead Enterprise): "Почему ...
 
Об особенностях использования значимых типов в .NET
Об особенностях использования значимых типов в .NETОб особенностях использования значимых типов в .NET
Об особенностях использования значимых типов в .NET
 
C sharp deep dive
C sharp deep diveC sharp deep dive
C sharp deep dive
 
C# Deep Dive
C# Deep DiveC# Deep Dive
C# Deep Dive
 
Интерфейсы
ИнтерфейсыИнтерфейсы
Интерфейсы
 
C++ осень 2012 лекция 11
C++ осень 2012 лекция 11C++ осень 2012 лекция 11
C++ осень 2012 лекция 11
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
 
Kotlin на практике
Kotlin на практикеKotlin на практике
Kotlin на практике
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистов
 
Ecma script 6 in action
Ecma script 6 in actionEcma script 6 in action
Ecma script 6 in action
 
Solit 2014, EcmaScript 6 in Action, Трухин Юрий
Solit 2014, EcmaScript 6 in Action, Трухин Юрий Solit 2014, EcmaScript 6 in Action, Трухин Юрий
Solit 2014, EcmaScript 6 in Action, Трухин Юрий
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
msumobi2. Лекция 2
msumobi2. Лекция 2msumobi2. Лекция 2
msumobi2. Лекция 2
 

Programming Java - Lecture 02 - Objects - Lavrentyev Fedor