JavaRush /Java Blog /Random-KO /인터페이스 상속이 필요한 이유는 무엇입니까?
Павел
레벨 11

인터페이스 상속이 필요한 이유는 무엇입니까?

Random-KO 그룹에 게시되었습니다
인터페이스는 왜 필요한가요? 인터페이스 상속이 필요한 이유는 무엇입니까? 다형성이 필요한 이유는 무엇입니까? 인터페이스 상속 방법을 읽고 이해했지만 그 이유를 이해하지 못한 사람들을 위한 것입니다. 지난번에는 일반적인 Ivanov 제품군의 예를 사용하여 인터페이스가 필요한 이유를 살펴보았습니다. 우리는 고민하는 가족의 디지털화를 계속하고 있습니다. 모든 사람은 누구에게서도 물려받지 않았거나 누구에게도 물려주지 않은 습관, 즉 개인적인 습관을 가지고 있습니다. 우리의 임무는 각 가족 구성원에게 독특한 습관을 제공하는 것입니다. Java 평면으로 이동해 보겠습니다. 이러한 클래스에만 속할 클래스에 고유한 메서드를 구현해야 합니다. 글쎄요! 페트야입니다:
class Петя implements ПривычкиПапы, ПривычкиМамы {

//это личные Петины привычки
public void ковырятьВНосу () {
System.out.println("Ковырь-ковырь");
    }

//это унаследованные привычки
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать () {
System.out.println("Поджать губки");
    }
}
이 사람은 아빠입니다:
class Папа implements ПривычкиПапы {

//это личные Папины привычки
public void чесатьБороду () {
System.out.println("Чешу бороду");
    }

//это переданные привычки
   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}
이분은 엄마예요:
class Мама implements ПривычкиМамы{

//это личные Мамины привычки
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

//это переданные привычки
@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
완벽한! 모든 것이 정상적으로 작동합니다! 첫 번째 기사에서는 이 프로그램이 현실 세계를 반영한다고 밝혔습니다. 현실의 가장 흥미로운 특성은 그것이 항상 변한다는 것입니다. Ivanov 가족도 예외는 아니었고 Masha라는 달콤한 딸이있었습니다. 그리고 그녀는 엄마로부터 속눈썹을 두드리는 습관, 아빠로부터 훌쩍이는 습관을 물려받았습니다. 우리 프로그램을 변경해야 합니다. 인터페이스 상속이 필요한 이유는 무엇입니까?  - 1자, 그렇게 어렵지는 않습니다. 가장 중요한 것은 논리적으로 생각하는 것입니다. 결국 인터페이스가 필요한 이유는 모두가 알고 있습니다. 이제 Masha's Habits에 대한 인터페이스를 만들고 거기에 clapElashes()squish() 메서드를 설명하고 이를 Masha 에 구현하면 완료됩니다. 따라서 동일한 이름을 가진 메서드가 이미 다른 인터페이스에 구현되어 있는 경우 한 번만 수행하면 됩니다. 인터페이스 상속이 필요한 이유는 무엇입니까?  - 2실제로 Ivanov 가족이 어떤 계획을 가지고 있는지 누가 알겠습니까? Seryozha가 태어난 경우 아빠, 엄마, 증조할아버지 및 4세대 다른 누군가 로부터 습관을 물려받을 때마다 다음과 같은 인터페이스를 생성합니다. Seryozha의 습관 인터페이스 , 그리고 거기 다른 인터페이스에서 이미 수백 번 선언할 수 있는 메서드를 선언합니까? 2~3세대 안에 우리는 이미 다른 인터페이스에 설명되어 있는 여러 가지 동일한 방법을 사용하는 인터페이스를 갖게 될 위험이 있으며, 일부 습관의 이름을 변경해야 하는 경우(이는 상당히 가능합니다. 결국 세상은 변하고 있습니다) , 그렇다면 이 스파게티를 어떻게 알아낼지 상상할 수 없습니다. 남은 것은 앉아서 기적을 꿈꾸는 것뿐입니다. 인터페이스 상속이 필요한 이유는 무엇입니까?  - 삼이제 각 습관마다 고유한 인터페이스가 있다면. 상상해보자:
public interface ПривычкаПрихлюпывать {
    public void прихлюпывать();
}
public interface ПривычкаПоджимать {
    public void поджимать();
}
public interface ПривычкаКовырятьВНосу {
    public void ковырятьВНосу();
}
public interface ПривычкаХлопатьРесницами {
    public void хлопатьРесницами();
}
public interface ПривычкаЧесатьБороду {
    public void чесатьБороду();
}
그런 다음 레고에서처럼 개인 습관의 다중 상속을 사용하여 가족 구성원 개인의 습관에 필요한 인터페이스를 입력할 수 있습니다. 이 같은:
public interface ПривычкиМамы extends ПривычкаПоджимать, ПривычкаХлопатьРесницами {
    }
public interface ПривычкиПапы extends ПривычкаЧесатьБороду, ПривычкаХлюпать {
    }
public interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу {
    }
public interface ПривычкиМаши extends ПривычкаХлюпать, ПривычкаХлопатьРесницами {
    }
그런 다음 원하는 인터페이스를 원하는 클래스(예: Mom)에 구현하기만 하면 됩니다.
class Мама implements ПривычкиМамы{
@Override
public void хлопатьРесницами () {
System.out.println("Хлоп-хлоп");
    }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
Papa, Petya 및 Masha 도 마찬가지입니다 . 그런 다음 Ivanov 제품군이 확장되면 습관에 문제가 없을 것입니다. 샐러드의 재료처럼 인터페이스 수준에서 상속을 통해 습관을 섞고 동일한 이름을 가진 여러 메서드를 생성하지 않을 것입니다. 어, 꿈, 꿈... 인터페이스 상속이 필요한 이유는 무엇입니까?  - 4그려진 남자가 맞습니다. 실제로 가능합니다. 이제 Ivanov 가족의 시뮬레이션이 저장되었습니다! 세심한 독자는 "왜 각 가족 구성원을 위한 인터페이스를 만드는가? 우리는 일련의 조치를 가지고 있습니다. 필요한 클래스에 대해 즉시 구현합니다."라고 질문할 수 있습니다. 많은 병렬 세계에 Petya의 double이 있고 모든 Petya가 Petya's Habits 인터페이스를 구현해야 한다고 상상해 봅시다.
interface ПривычкиПети extends ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу

class ПетяВселеннаяХ implements ПривычкиПети
class ПетяВселеннаяY implements ПривычкиПети
// и т.д.
공통 인터페이스가 없다면 어떨까요?
class ПетяВселеннаяХ implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
class ПетяВселеннаяY implements ПривычкаПоджимать, ПривычкаХлюпать,ПривычкаКовырятьВНосу
// и т.д.
이로 인해 더 반복적인 코드가 생성됩니다. 인터페이스 상속을 통해 애플리케이션 변경이 더욱 유연해지며, 특히 메서드 반복 문제를 해결할 수 있습니다. 인터페이스의 다중 상속이 허용된다는 점을 다시 한 번 참고하세요.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION