Недавно я начал изучать Java с нуля через курс Udemy - основы Java до продвижения Шрьянш Джайн. Первая лекция охватывала эти темы - абстракция и инкапсуляция. Я знаком с < /strong>
oops, 4 столба OOP, но мне не хватает глубинных знаний. < /Strong> < /p>
< /blockquote>
Определение абстракции данных учебника - < /p>
Сокрытие деталей внутренней реализации и обнаружение функции
для пользователя. Абстракция может быть достигнута с помощью
Abstract Class & Interfaces.abstract class Animal {
abstract void sound(); // Abstract method with no implementation
void sleep() { // Concrete method
System.out.println("This animal is sleeping.");
}
}
class Dog extends Animal {
void sound() {
System.out.println("Dog barks.");
}
}
class Cat extends Animal {
void sound() {
System.out.println("Cat meows.");
}
}
public class Main {
public static void main(String[] args) {
// Client code using Animal reference
Animal animal1 = new Dog(); // Polymorphic reference
Animal animal2 = new Cat(); // Polymorphic reference
// Client calls sound() without knowing the implementation
System.out.println("Animal 1 makes sound:");
animal1.sound(); // Calls Dog's sound() implementation
System.out.println("Animal 2 makes sound:");
animal2.sound(); // Calls Cat's sound() implementation
// Client also calls sleep()
animal1.sleep();
animal2.sleep();
}
}
< /code>
Поскольку у меня были некоторые сомнения, я обращался за помощью к Chatgpt и Grok. Я сомневаюсь, что если абстракция означает скрыть внутреннюю реализацию, то если я нажимаю на тип ссылки (животное) или Constructor Dog (), я вижу внутреннюю реализацию этих классов и методов. Абстракция, это предложило мне < /p>
Создать новый проект Maven (давайте назовем его проектом a) с помощью
требуемые классы /интерфейсы. /> < /ol>
Итак, я создал Jar of Project A, новый проект (клиент -проект) и добавил JAR Project A в зависимости. Затем удалил проект A из IDE. Я добавил эту строку в клиентский проект -< /p>
Animal animal1 = new Dog();
< /code>
Теперь, когда я нажимаю на ссылку на животное или конструктор Dog (), я не вижу реализации. Тогда я подумал, что круто, это абстракция. < /P>
Тогда что -то пересекало мой разум -< /p>
Если я могу сделать это с абстрактными классами и интерфейсами, то я могу сделать
то же самое с нормальным классом и методами. банка этого, удалила проект из IDE. Затем я добавил зависимость в клиентском проекте и добавил эту строку -< /p>
SimpleClass simpleClass = new SimpleClass();
< /code>
Как и раньше, когда я нажимаю на ссылку или конструктор, я не вижу реализации. < /p>
Без какого -либо абстрактного класса или интерфейса все еще, реализация скрыта. Чем это отличается от абстракции? Когда я задал этот вопрос CHATGPT, он ответил: < /p>
абстракция - скрывая логику реализации на языковом уровне
через абстрактные классы или интерфейсы < /p>
< /blockquote>
код, скрытый - укрытие исходного
vise vise visiby (jars jars. Разработчик или пользователь < /p>
< /blockquote>
Как они даже разные. Это все еще чувствует то же самое для меня. Я не могу понять концепцию абстракции упс в Java. Я сейчас более запутался; Кто -нибудь может помочь мне в этом?
Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-in-java
В чем разница между абстракцией данных и скрытием кода в Java? ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
В чем разница между абстракцией данных и скрытием кода в Java? [закрыто]
Anonymous » » в форуме JAVA - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Экземпляр и статический поток управления с наследованием и переопределением/скрытием метода
Anonymous » » в форуме JAVA - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Разница между Convolve2d и Filter2d. Почему существует разница в выходных формах?
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-