В приведенном выше примере вы можете написать что-то вроде этого:
public interface ToBeImplemented {
public string doThis();
}
public class ImplementationA implements ToBeImplemented {
@override
public string doThis() {
//ImplementationA of doThis
return null;
}
}
public class ImplementationB implements ToBeImplemented {
@override
public string doThis() {
//ImplementationB of doThis
return null;
}
}
Тогда вы можете иметь еще один класс, и основной метод, например:
class SomeClass{
public static void main(String[] args) {
ToBeImplemented someImplementation;
//now you can pick an implementation, based on user input for example
if (userInput == something)
someImplementation = new ImplementationA();
else
someImplementation = new ImplementationB();
//do some staff
//Regardless of the user input, main method only knows about the
//abstract "ToBeImplemented", and so calls the .doThis() method of it
//and the right method gets called based on the user input.
someImplementaion.doThis();
//at That
}
}
Абстракции заключается в том, что вы можете объявить ссылку ToBeImplemented, а затем назначить ей либо реализациюA, либо реализациюB (и, возможно, любую другую реализацию). Но вы пишете свой код против абстрактного ToBeImplemented, и пусть некоторые условия решат, какая должна быть правильная реализация ToBeImplemented (и, как результат doThis()).
Это один из способов мышления об абстракции. Не неправильно; не все есть. – duffymo
@duffymo вы можете помочь мне понять, что еще включено в абстракцию? – aspan88
Google не установлен на вашем компьютере? Что вы читали? Какие исследования вы сделали? – duffymo