Основные принципы ООП
Инкапсуляция — возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.
Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.
Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.
#lesson #oop
Инкапсуляция — возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.
Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.
Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.
#lesson #oop
Два понятия инкапсуляции
✅ Правильное понятие:
Инкапсуляция — механизм языка, позволяющий объединить данные и методы в единый объект.
❌ Неправильное понятие:
Инкапсуляция — это сокрытие данных одних компонентов к другим.
ℹ️ Отличие:
Инкапсуляция позволяет разбивать данные на объекты и, зачастую, скрывать детали реализации от пользователя. Не во всех языках сокрытие существует, но в Java без него никак.
#java #lesson #oop
✅ Правильное понятие:
Инкапсуляция — механизм языка, позволяющий объединить данные и методы в единый объект.
❌ Неправильное понятие:
Инкапсуляция — это сокрытие данных одних компонентов к другим.
ℹ️ Отличие:
Инкапсуляция позволяет разбивать данные на объекты и, зачастую, скрывать детали реализации от пользователя. Не во всех языках сокрытие существует, но в Java без него никак.
#java #lesson #oop
❤4
Интерфейсы
Интерфейсы определяют некоторый функционал, который предстоит сделать. Как с целями на новый год, они как бы есть, но их ещё надо реализовать.
В одном классе может использоваться несколько интерфейсов. Внутри интерфейсов может быть только определение! Никаких переменных, никаких реализаций!
Интерфейсы используются, когда нам нужен какой-то функционал, но мы не знаем, как он будет работать. Например, получить данные. По HTTP? Считать с файла? Задать вопрос пользователю?
#java #lesson #oop
Интерфейсы определяют некоторый функционал, который предстоит сделать. Как с целями на новый год, они как бы есть, но их ещё надо реализовать.
В одном классе может использоваться несколько интерфейсов. Внутри интерфейсов может быть только определение! Никаких переменных, никаких реализаций!
Интерфейсы используются, когда нам нужен какой-то функционал, но мы не знаем, как он будет работать. Например, получить данные. По HTTP? Считать с файла? Задать вопрос пользователю?
#java #lesson #oop
❤3
implements и extends
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
В чём разница между абстрактными классами и интерфейсами?
С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.
Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.
Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.
#java #lesson #oop
С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.
Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.
Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.
#java #lesson #oop
❤1
Теория дженериков в Java
Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.
Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).
По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.
#java #lesson #oop
Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.
Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).
По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.
#java #lesson #oop
Основные принципы ООП
Инкапсуляция — возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.
Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.
Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.
#lesson #oop
Инкапсуляция — возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.
Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.
Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.
#lesson #oop
❤2
implements и extends
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
👍2🔥2
implements и extends
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
👍2
Основные принципы ООП
Инкапсуляция — возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.
Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.
Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.
#lesson #oop
Инкапсуляция — возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.
Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.
Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.
#lesson #oop
👍1
В чём разница между абстрактными классами и интерфейсами?
С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.
Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.
Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.
#java #lesson #oop
С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.
Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.
Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.
#java #lesson #oop
👍2
Теория дженериков в Java
Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.
Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).
По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.
#java #lesson #oop
Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.
Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).
По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.
#java #lesson #oop
👍1
implements и extends
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.
Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.
#java #lesson #oop
В чём разница между абстрактными классами и интерфейсами?
С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.
Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.
Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.
#java #lesson #oop
С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.
Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.
Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.
#java #lesson #oop
👍3🤔1
Теория дженериков в Java
Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.
Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).
По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.
#java #lesson #oop
Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.
Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).
По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.
#java #lesson #oop
Основные принципы ООП
Инкапсуляция — возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.
Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.
Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.
#lesson #oop
Инкапсуляция — возможность пользователю класса не задумываться, как механика реализована внутри. Вам не нужно знать, как работает электричество, если вы хотите просто включить лампочку.
Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.
Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.
#lesson #oop
В чём разница между абстрактными классами и интерфейсами?
С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.
Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.
Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.
#java #lesson #oop
С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.
Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.
Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.
#java #lesson #oop
😁2
Теория дженериков в Java
Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.
Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).
По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.
#java #lesson #oop
Дженерики — это невероятно важная часть языка Java, которую вы используете повсеместно. Их суть в обобщении типов, тем самым делая классы и методы гибкими.
Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).
По сути дженерики это лишь синтаксический сахар, поскольку в скомпилированном коде они не отличимы от обычного преобразования типов.
#java #lesson #oop
Java: Не делай поля публичными. Держи их
👉 Java Portal
private и используй геттеры/сеттеры для инкапсуляции. #Java #OOPPlease open Telegram to view this post
VIEW IN TELEGRAM
👍6
Java: используйте полиморфизм вместо цепочек
Проверки типов часто приводят к разрастающимся
❌ До:
Каждый новый тип требует правки метода.
✅ После:
Преимущества:
→ нет цепочек
→ меньше условной логики
→ проще расширять систему новыми типами
→ соблюдается принцип Open/Closed
→ поведение находится внутри самого объекта, а не размазано по коду
Добавить новое животное теперь можно без изменения существующей логики:
Клиентский код останется прежним:
Пусть объекты сами решают, как себя вести. Именно для этого и существует полиморфизм. #Java #OOP
👉 Java Portal
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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3