Когда класс реализует интерфейс, делает ли объекты, созданные из класса, воспринимаемыми как объект этого интерфейса?Внедрение интерфейсов и объектов
Т.е., если класс, реализующий интерфейс Runnable, создает экземпляры, созданные из этого класса, для вызова объекта Runnable?
Итак, где ожидаемая ссылочная переменная Runnable (скажем, в параметре метода или конструктора), почему это законно, что мы можем предоставить экземпляр класса в качестве аргумента этому методу или конструктору? Это потому, что, реализуя интерфейс, класс, по сути, является объектом интерфейса?
спасибо. Итак, просто чтобы подтвердить, где интерфейс ожидается как аргумент метода, если конкретный класс реализует интерфейс внутри тела класса, то вы можете передать ключевое слово «this» в качестве аргумента для метода? То есть, это работает только потому, что «это» (что относится к объекту, в котором был вызван метод) ** содержит ** реализованный метод интерфейса? – 151SoBad
@ 151SoBad "[...] вы можете передать ключевое слово' this' в качестве аргумента метода? " Это верно. «это работает только потому, что' this' [...] содержит реализованный метод интерфейса? » Класс может содержать все методы из интерфейса без реализации этого интерфейса (например, потому что автор забыл написать «реализует XyzInterface»). В этом случае наличие всех методов будет недостаточным: нужно объявить класс как реализацию интерфейса, что связано с обещанием реализовать все методы интерфейса. – dasblinkenlight
Отлично, большое спасибо за проницательность. – 151SoBad