Разве не используется метод отдельного класса, рассматриваемый как абстракция - PullRequest
0 голосов
/ 18 января 2020

При вызове метода из другого класса это считается абстракцией? Потому что, когда метод main создает объект Dog и использует метод animalSound, пользователь не может видеть, что делается. Считается ли это абстракцией?

Собака. java

public class Dog {
    public void animalSound() {
         System.out.println("Woof");
    }
}

Main. java

public class Main {
    public static void main() {
        Dog d = new Dog();
        d.animalSound();
    }
}

1 Ответ

2 голосов
/ 18 января 2020

При вызове метода из другого класса это считается абстракцией?

Абстракция (в информатике) означает скрытие деталей.

Итак, вы по сути спрашиваете, является ли Метод вызов абстрагирует (скрывает) детали метода.

Строгий ответ - Нет. Детали того, что делает метод, скрыты методом объявление , а не методом , вызовом .

Однако, в более общем смысле, верно, что методы являются формой абстракции.


Кстати, комментатор сказал это:

Абстракция вступает в игру когда вы используете наследование.

Это не правильно.

  1. Абстракция данных не требует наследования. Фактически, классическое определение (статически) объектно-ориентированного языка состоит в том, что он поддерживает «наследование + абстракция данных (или инкапсуляция) + полиморфизм». Наследование и абстракция данных являются ортогональными свойствами.

  2. Существуют примеры языков программирования, которые поддерживают абстракцию данных без наследования. Например, CLU и (в зависимости от вашей строгости 1 ) Ada83.

  3. Абстракция данных - не единственный вид абстракции. Другие виды включают:

    • Процедурная абстракция; то есть процедуры, функции, подпрограммы и так далее. В процедурной абстракции мы скрываем только детали алгоритма c.

    • Модуляризация, которая скрывает детали более крупного масштаба некоторой части приложения.

Подробнее см. На странице Википедии Абстракция .


1 - в Ada83 подтип не может добавлять новые поля или переопределять существующие методы ( "операции"). См http://goanna.cs.rmit.edu.au/dale/ada/aln/14_OO.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...