Ребят создам пост в котором предлагаю делиться своими pet-проектами)
Начну эстафету с себя)
Восстановил мини консольную игру которую писал как обучающий проект)
Ссылку на гит прилагаю, вроде должно все работать))
Конечно ж интересует Ваше мнение☺️
https://github.com/Oleborn/GameTest
#Java #PetProjects
Начну эстафету с себя)
Восстановил мини консольную игру которую писал как обучающий проект)
Ссылку на гит прилагаю, вроде должно все работать))
https://github.com/Oleborn/GameTest
#Java #PetProjects
Подписывайтесь на канал, здесь Google сделал из человека программиста...)
https://t.me/Java_for_beginner_dev
#Mems
https://t.me/Java_for_beginner_dev
#Mems
Forwarded from English Beginners
https://t.me/model3ddd/3103
Напоминаю про канал моего товарища и коллеги!)
Если интересно направление 3D, примеры работ и в целом направление - это то что Вы искали)))
#Bro
Напоминаю про канал моего товарища и коллеги!)
Если интересно направление 3D, примеры работ и в целом направление - это то что Вы искали)))
#Bro
Telegram
3Dshnik
👑 Че там тапаете?
3Dshnik - Подписаться
3Dshnik - Подписаться
Java for Beginner
Ребят создам пост в котором предлагаю делиться своими pet-проектами) Начну эстафету с себя) Восстановил мини консольную игру которую писал как обучающий проект) Ссылку на гит прилагаю, вроде должно все работать)) Конечно ж интересует Ваше мнение☺️ htt…
Остальным поделиться нечем?
Присоединяйтесь!
Присоединяйтесь!
Полиморфизм
Полиморфизм (от греч. "много форм") — один из основополагающих принципов объектно-ориентированного программирования (ООП), который позволяет объектам разных классов быть обработанными единообразно. Полиморфизм позволяет использовать один интерфейс для различных типов объектов.
Типы полиморфизма:
Компиляторный полиморфизм (статический полиморфизм): Достигается за счет перегрузки методов (method overloading).
Рантайм полиморфизм (динамический полиморфизм): Достигается за счет переопределения методов (method overriding) и использования наследования и интерфейсов.
Полиморфизм в Java достигается в первую очередь через наследование и интерфейсы.
Пример полиморфизма:
Рассмотрим пример с суперклассом Animal и подклассами Dog и Cat.
Использование полиморфизма:
Создадим класс Main, чтобы продемонстрировать полиморфизм.
Преимущества полиморфизма:
Гибкость: Позволяет обрабатывать объекты различных классов через общий интерфейс.
Расширяемость: Упрощает добавление новых классов, поскольку методы вызываются на основе общего интерфейса.
Читаемость и поддерживаемость: Уменьшает количество условных операторов, что делает код более чистым и понятным.
Полиморфизм и интерфейсы:
Полиморфизм также поддерживается через интерфейсы. Рассмотрим пример с интерфейсом Animal и классами Dog и Cat.
Использование полиморфизма с интерфейсами:
#Java #Training #ООП #Полиформизм
Полиморфизм (от греч. "много форм") — один из основополагающих принципов объектно-ориентированного программирования (ООП), который позволяет объектам разных классов быть обработанными единообразно. Полиморфизм позволяет использовать один интерфейс для различных типов объектов.
Типы полиморфизма:
Компиляторный полиморфизм (статический полиморфизм): Достигается за счет перегрузки методов (method overloading).
Рантайм полиморфизм (динамический полиморфизм): Достигается за счет переопределения методов (method overriding) и использования наследования и интерфейсов.
Полиморфизм в Java достигается в первую очередь через наследование и интерфейсы.
Пример полиморфизма:
Рассмотрим пример с суперклассом Animal и подклассами Dog и Cat.
// Суперкласс
public class Animal {
public void makeSound() {
System.out.println("Some generic animal sound");
}
}
// Подкласс
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
}
// Подкласс
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow! Meow!");
}
}
Использование полиморфизма:
Создадим класс Main, чтобы продемонстрировать полиморфизм.
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.makeSound(); // Выведет "Woof! Woof!"
myCat.makeSound(); // Выведет "Meow! Meow!"
}
}
Преимущества полиморфизма:
Гибкость: Позволяет обрабатывать объекты различных классов через общий интерфейс.
Расширяемость: Упрощает добавление новых классов, поскольку методы вызываются на основе общего интерфейса.
Читаемость и поддерживаемость: Уменьшает количество условных операторов, что делает код более чистым и понятным.
Полиморфизм и интерфейсы:
Полиморфизм также поддерживается через интерфейсы. Рассмотрим пример с интерфейсом Animal и классами Dog и Cat.
public interface Animal {
void makeSound();
}
public class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
}
public class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("Meow! Meow!");
}
}
Использование полиморфизма с интерфейсами:
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.makeSound(); // Выведет "Woof! Woof!"
myCat.makeSound(); // Выведет "Meow! Meow!"
}
}
#Java #Training #ООП #Полиформизм
Подписывайтесь на канал, здесь мы научим Вас Ctrl+C — Ctrl+V)
https://t.me/Java_for_beginner_dev
#Mems
https://t.me/Java_for_beginner_dev
#Mems
Что выведет код?
#Tasks
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
Collections.reverse(numbers);
numbers.removeIf(n -> n % 2 == 0);
System.out.println(numbers);
}
}
#Tasks
Абстрактные классы и методы
Абстрактный класс — это класс, который не может быть инстанцирован и служит для определения общей функциональности, которую подклассы должны реализовать. Абстрактный метод — это метод без реализации, который должен быть переопределен в подклассе.
Абстрактный класс определяется с помощью ключевого слова abstract.
Подклассы абстрактного класса:
Подклассы абстрактного класса должны предоставить реализацию всех абстрактных методов суперкласса.
Использование абстрактного класса:
Преимущества использования абстрактных классов:
Повторное использование кода: Общие методы и свойства определяются в абстрактном классе и наследуются подклассами.
Организация и структурирование кода: Абстрактные классы помогают организовать иерархии классов и четко определить общие характеристики.
Принудительная реализация: Подклассы обязаны реализовать абстрактные методы, что обеспечивает консистентность в функциональности.
Разница между абстрактными классами и интерфейсами:
Множественное наследование: Класс может реализовывать несколько интерфейсов, но может наследоваться только от одного абстрактного класса.
Реализация методов: Интерфейсы не могут содержать реализацию методов (до Java 8, после появились default методы), в то время как абстрактные классы могут содержать методы с реализацией.
Использование в коде: Абстрактные классы используются для определения общего функционала с частичной реализацией, тогда как интерфейсы служат для определения контрактов без реализации.
Пример использования интерфейсов и абстрактных классов:
#Java #Training #ООП
Абстрактный класс — это класс, который не может быть инстанцирован и служит для определения общей функциональности, которую подклассы должны реализовать. Абстрактный метод — это метод без реализации, который должен быть переопределен в подклассе.
Абстрактный класс определяется с помощью ключевого слова abstract.
public abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public abstract void makeSound(); // Абстрактный метод
public void eat() {
System.out.println(name + " is eating");
}
}
Подклассы абстрактного класса:
Подклассы абстрактного класса должны предоставить реализацию всех абстрактных методов суперкласса.
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
}
public class Cat extends Animal {
public Cat(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println("Meow! Meow!");
}
}
Использование абстрактного класса:
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog("Buddy");
Animal myCat = new Cat("Whiskers");
myDog.makeSound(); // Выведет "Woof! Woof!"
myCat.makeSound(); // Выведет "Meow! Meow!"
myDog.eat(); // Выведет "Buddy is eating"
myCat.eat(); // Выведет "Whiskers is eating"
}
}
Преимущества использования абстрактных классов:
Повторное использование кода: Общие методы и свойства определяются в абстрактном классе и наследуются подклассами.
Организация и структурирование кода: Абстрактные классы помогают организовать иерархии классов и четко определить общие характеристики.
Принудительная реализация: Подклассы обязаны реализовать абстрактные методы, что обеспечивает консистентность в функциональности.
Разница между абстрактными классами и интерфейсами:
Множественное наследование: Класс может реализовывать несколько интерфейсов, но может наследоваться только от одного абстрактного класса.
Реализация методов: Интерфейсы не могут содержать реализацию методов (до Java 8, после появились default методы), в то время как абстрактные классы могут содержать методы с реализацией.
Использование в коде: Абстрактные классы используются для определения общего функционала с частичной реализацией, тогда как интерфейсы служат для определения контрактов без реализации.
Пример использования интерфейсов и абстрактных классов:
public interface Flyable {
void fly();
}
public abstract class Bird {
public abstract void makeSound();
public void layEggs() {
System.out.println("Laying eggs");
}
}
public class Sparrow extends Bird implements Flyable {
@Override
public void makeSound() {
System.out.println("Chirp! Chirp!");
}
@Override
public void fly() {
System.out.println("Flying high!");
}
}
public class Main {
public static void main(String[] args) {
Sparrow sparrow = new Sparrow();
sparrow.makeSound(); // Выведет "Chirp! Chirp!"
sparrow.fly(); // Выведет "Flying high!"
sparrow.layEggs(); // Выведет "Laying eggs"
}
}
#Java #Training #ООП
Интерфейсы
Интерфейс в Java — это абстрактный тип, который используется для указания на поведение, которое классы должны реализовать. Интерфейсы предоставляют способ достижения полной абстракции и множественного наследования.
Объявление интерфейса
Интерфейс объявляется с использованием ключевого слова interface.
Реализация интерфейса
Класс, который реализует интерфейс, должен предоставить реализацию всех методов, объявленных в интерфейсе.
Использование интерфейсов
Методы по умолчанию и статические методы
С Java 8 интерфейсы могут содержать методы по умолчанию (default methods) и статические методы.
Использование методов по умолчанию и статических методов
Множественное наследование через интерфейсы
Класс может реализовывать несколько интерфейсов, что позволяет комбинировать различные типы поведения.
Использование множественного наследования
Преимущества интерфейсов:
Полная абстракция: Интерфейсы обеспечивают полную абстракцию, так как методы интерфейсов не содержат реализацию (до Java 8).
Множественное наследование: Классы могут реализовывать несколько интерфейсов, что позволяет создавать гибкие и модульные системы.
Поддержка контрактов: Интерфейсы определяют контракт, который должен быть реализован классом, что обеспечивает консистентность и предсказуемость поведения.
#Java #Training #ООП
Интерфейс в Java — это абстрактный тип, который используется для указания на поведение, которое классы должны реализовать. Интерфейсы предоставляют способ достижения полной абстракции и множественного наследования.
Объявление интерфейса
Интерфейс объявляется с использованием ключевого слова interface.
public interface Animal {
void makeSound(); // Метод без реализации
}
Реализация интерфейса
Класс, который реализует интерфейс, должен предоставить реализацию всех методов, объявленных в интерфейсе.
public class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
}
public class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("Meow! Meow!");
}
}
Использование интерфейсов
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.makeSound(); // Выведет "Woof! Woof!"
myCat.makeSound(); // Выведет "Meow! Meow!"
}
}
Методы по умолчанию и статические методы
С Java 8 интерфейсы могут содержать методы по умолчанию (default methods) и статические методы.
public interface Animal {
void makeSound();
default void sleep() {
System.out.println("Sleeping...");
}
static void description() {
System.out.println("Animals can make sounds.");
}
}
public class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
}
Использование методов по умолчанию и статических методов
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog();
myDog.makeSound(); // Выведет "Woof! Woof!"
myDog.sleep(); // Выведет "Sleeping..."
Animal.description(); // Выведет "Animals can make sounds."
}
}
Множественное наследование через интерфейсы
Класс может реализовывать несколько интерфейсов, что позволяет комбинировать различные типы поведения.
public interface Flyable {
void fly();
}
public interface Swimmable {
void swim();
}
public class Duck implements Animal, Flyable, Swimmable {
@Override
public void makeSound() {
System.out.println("Quack! Quack!");
}
@Override
public void fly() {
System.out.println("Flying high!");
}
@Override
public void swim() {
System.out.println("Swimming in the pond!");
}
}
Использование множественного наследования
public class Main {
public static void main(String[] args) {
Duck myDuck = new Duck();
myDuck.makeSound(); // Выведет "Quack! Quack!"
myDuck.fly(); // Выведет "Flying high!"
myDuck.swim(); // Выведет "Swimming in the pond!"
}
}
Преимущества интерфейсов:
Полная абстракция: Интерфейсы обеспечивают полную абстракцию, так как методы интерфейсов не содержат реализацию (до Java 8).
Множественное наследование: Классы могут реализовывать несколько интерфейсов, что позволяет создавать гибкие и модульные системы.
Поддержка контрактов: Интерфейсы определяют контракт, который должен быть реализован классом, что обеспечивает консистентность и предсказуемость поведения.
#Java #Training #ООП
Рассмотрите следующий код. Какое значение будет напечатано в консоль при его выполнении?
#Tasks
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
int result = 0;
for (int i = 0; i < arr.length; i += 2) {
result += arr[i];
}
System.out.println(result);
}
}
#Tasks
Различия между абстрактными классами и интерфейсами
Основные различия между абстрактными классами и интерфейсами:
Множественное наследование:
Абстрактные классы: Класс может наследовать только один абстрактный класс.
Интерфейсы: Класс может реализовывать несколько интерфейсов.
Методы с реализацией:
Абстрактные классы: Могут содержать как абстрактные методы (без реализации), так и методы с реализацией.
Интерфейсы: До Java 8 интерфейсы не могли содержать методов с реализацией. С Java 8 интерфейсы могут содержать методы по умолчанию и статические методы.
Ключевые слова:
Абстрактные классы: Определяются с использованием ключевого слова abstract.
Интерфейсы: Определяются с использованием ключевого слова interface.
Конструкторы:
Абстрактные классы: Могут иметь конструкторы.
Интерфейсы: Не могут иметь конструкторов.
Поле класса:
Абстрактные классы: Могут содержать поля (переменные экземпляра).
Интерфейсы: Могут содержать только константы (public static final поля).
Примеры для сравнения:
Абстрактный класс:
Интерфейс:
Сравнительное использование:
Когда использовать абстрактные классы и интерфейсы:
Используйте абстрактный класс, когда:
Вам нужно определить общие методы и поля, которые будут использоваться в подклассах.
Вам нужно предоставить частичную реализацию методов, которую могут переопределить подклассы.
Вам нужно использовать конструкторы для инициализации общих свойств.
Используйте интерфейсы, когда:
Вам нужно определить контракт для множества несвязанных классов.
Вам нужно поддерживать множественное наследование.
Вы хотите обеспечить полную абстракцию без предоставления реализации.
#Java #Training #ООП
Основные различия между абстрактными классами и интерфейсами:
Множественное наследование:
Абстрактные классы: Класс может наследовать только один абстрактный класс.
Интерфейсы: Класс может реализовывать несколько интерфейсов.
Методы с реализацией:
Абстрактные классы: Могут содержать как абстрактные методы (без реализации), так и методы с реализацией.
Интерфейсы: До Java 8 интерфейсы не могли содержать методов с реализацией. С Java 8 интерфейсы могут содержать методы по умолчанию и статические методы.
Ключевые слова:
Абстрактные классы: Определяются с использованием ключевого слова abstract.
Интерфейсы: Определяются с использованием ключевого слова interface.
Конструкторы:
Абстрактные классы: Могут иметь конструкторы.
Интерфейсы: Не могут иметь конструкторов.
Поле класса:
Абстрактные классы: Могут содержать поля (переменные экземпляра).
Интерфейсы: Могут содержать только константы (public static final поля).
Примеры для сравнения:
Абстрактный класс:
public abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public abstract void makeSound(); // Абстрактный метод
public void eat() {
System.out.println(name + " is eating");
}
}
public class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
}
Интерфейс:
public interface Animal {
void makeSound(); // Метод без реализации
default void sleep() {
System.out.println("Sleeping...");
}
}
public class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
}
Сравнительное использование:
public class Main {
public static void main(String[] args) {
// Абстрактный класс
Dog dog = new Dog("Buddy");
dog.makeSound(); // Выведет "Woof! Woof!"
dog.eat(); // Выведет "Buddy is eating"
// Интерфейс
Animal animal = new Dog();
animal.makeSound(); // Выведет "Woof! Woof!"
animal.sleep(); // Выведет "Sleeping..."
}
}
Когда использовать абстрактные классы и интерфейсы:
Используйте абстрактный класс, когда:
Вам нужно определить общие методы и поля, которые будут использоваться в подклассах.
Вам нужно предоставить частичную реализацию методов, которую могут переопределить подклассы.
Вам нужно использовать конструкторы для инициализации общих свойств.
Используйте интерфейсы, когда:
Вам нужно определить контракт для множества несвязанных классов.
Вам нужно поддерживать множественное наследование.
Вы хотите обеспечить полную абстракцию без предоставления реализации.
#Java #Training #ООП
Forwarded from RomanGV
This media is not supported in your browser
VIEW IN TELEGRAM
Всем приятных выходных!
Не думаем о работе, наслаждаемся летом и солнышком🔆
Делитесь фото, как отдыхаете!😉
#Weekend
Не думаем о работе, наслаждаемся летом и солнышком🔆
Делитесь фото, как отдыхаете!😉
#Weekend
Что выведет код?
#Tasks
public class Main {
public static void main(String[] args) {
int x = 10;
int y = 5;
x += y; // x = x + y
y -= 3; // y = y - 3
x *= 2; // x = x * 2
y /= 2; // y = y / 2
System.out.println("x = " + x + ", y = " + y);
}
}
#Tasks
Варианты ответа:
Anonymous Quiz
0%
x = 20, y = 2
100%
x = 30, y = 1
0%
x = 15, y = 4
0%
x = 10, y = 2