Java Portal | Программирование
12K subscribers
1.42K photos
110 videos
43 files
1.44K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Основные принципы ООП

Инкапсуляция
— возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.

Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.

Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.

#lesson #oop
Два понятия инкапсуляции

Правильное понятие:
Инкапсуляция — механизм языка, позволяющий объединить данные и методы в единый объект.

Неправильное понятие:
Инкапсуляция — это сокрытие данных одних компонентов к другим.

ℹ️ Отличие:
Инкапсуляция позволяет разбивать данные на объекты и, зачастую, скрывать детали реализации от пользователя. Не во всех языках сокрытие существует, но в Java без него никак.

#java #lesson #oop
4
Интерфейсы

Интерфейсы определяют некоторый функционал, который предстоит сделать. Как с целями на новый год, они как бы есть, но их ещё надо реализовать.

В одном классе может использоваться несколько интерфейсов. Внутри интерфейсов может быть только определение! Никаких переменных, никаких реализаций!

Интерфейсы используются, когда нам нужен какой-то функционал, но мы не знаем, как он будет работать. Например, получить данные. По HTTP? Считать с файла? Задать вопрос пользователю?

#java #lesson #oop
3
implements и extends

Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.

Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.

#java #lesson #oop
В чём разница между абстрактными классами и интерфейсами?

С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.

Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.

Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.

#java #lesson #oop
1
Теория дженериков в Java

Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.

Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).

По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.

#java #lesson #oop
Основные принципы ООП

Инкапсуляция
— возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.

Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.

Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.

#lesson #oop
2
implements и extends

Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.

Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.

#java #lesson #oop
👍2🔥2
implements и extends

Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.

Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.

#java #lesson #oop
👍2
Основные принципы ООП

Инкапсуляция — возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.

Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.

Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.

#lesson #oop
👍1
В чём разница между абстрактными классами и интерфейсами?

С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.

Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.

Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.

#java #lesson #oop
👍2
Теория дженериков в Java

Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.

Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).

По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.

#java #lesson #oop
👍1
implements и extends

Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.

Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.

#java #lesson #oop
В чём разница между абстрактными классами и интерфейсами?

С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.

Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.

Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.

#java #lesson #oop
👍3🤔1
Теория дженериков в Java

Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.

Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).

По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.

#java #lesson #oop
Основные принципы ООП

Инкапсуляция
— возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.

Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.

Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.

#lesson #oop
В чём разница между абстрактными классами и интерфейсами?

С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.

Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.

Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.

#java #lesson #oop
😁2
Теория дженериков в Java

Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.

Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).

По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.

#java #lesson #oop
Java: Не делай поля публичными. Держи их private и используй геттеры/сеттеры для инкапсуляции. #Java #OOP

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Java: используйте полиморфизм вместо цепочек instanceof.
Проверки типов часто приводят к разрастающимся if/else, нарушают принцип Open/Closed и заставляют изменять существующий код при добавлении новых сущностей.

До:

public String describe(Animal animal) {
if (animal instanceof Dog) {
return "Woof";
} else if (animal instanceof Cat) {
return "Meow";
} else if (animal instanceof Cow) {
return "Moo";
}

throw new IllegalArgumentException("Unknown animal");
}


Каждый новый тип требует правки метода.

После:

public interface Animal {
String sound();
}

public final class Dog implements Animal {
public String sound() {
return "Woof";
}
}

public final class Cat implements Animal {
public String sound() {
return "Meow";
}
}

public final class Cow implements Animal {
public String sound() {
return "Moo";
}
}

public String describe(Animal animal) {
return animal.sound();
}


Преимущества:
→ нет цепочек instanceof и приведения типов
→ меньше условной логики
→ проще расширять систему новыми типами
→ соблюдается принцип Open/Closed
→ поведение находится внутри самого объекта, а не размазано по коду

Добавить новое животное теперь можно без изменения существующей логики:
public final class Sheep implements Animal {
public String sound() {
return "Baa";
}
}


Клиентский код останется прежним:
describe(new Sheep());


Пусть объекты сами решают, как себя вести. Именно для этого и существует полиморфизм. #Java #OOP

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3