黄舟2017-04-18 10:13:05
예를 들어 생물과 사람은 이때 인터페이스로 사용될 수 있고, 사람은 유기체를 구현하는 추상 클래스로 사용될 수 있으며, 남성과 여성은 구체적 구현 클래스로 사용될 수 있는 이유는 무엇입니까? 이렇게 설계될까? 생물학은 매우 추상적인 개념이기 때문에 구체적인 동작(즉, 특정 메서드 구현)을 추상화하기가 어렵습니다. 이때 인간을 추상 클래스로 사용할 수 있는 이유는 무엇입니까? ? 구체적인 행동과 행동을 가질 수 있기 때문에, 남성과 여성은 서로 다른 성적 특성을 가질 수도 있지만, 이는 다른 행동 특성으로 사용될 수 있습니다. 추상 클래스의 추상 메서드를 만들고 하위 클래스에서 이를 구현하도록 합니다. 아마도 그럴 것입니다.
天蓬老师2017-04-18 10:13:05
예를 들어, 사람이든 물건이든 비슷한 사물(오랜 생각을 해보니 다른 표현을 쓰는 게 적절하지 않네요)이 많이 있습니다. 속성은 거의 동일하므로 클래스로 추상화할 수 있습니다. 예를 들어, 자동차 카테고리에는 바퀴, 엔진, 섀시, 쉘과 같은 속성이 있습니다. 현재 속성을 저장하기 위한 새 객체. 아마도 이러한 속성을 데이터베이스에 저장하고 싶을 수도 있고, 현재 객체가 데이터를 저장하는 역할을 할 수도 있습니다. 객체는 데이터를 저장할 수 있을 뿐만 아니라 자동차 시동과 같은 고유한 방법도 가지고 있습니다. 현재 개체의 시작 메서드를 호출하려면 버튼을 클릭하세요. 일반 클래스의 메소드는 데이터의 변경과 관련이 있으며, 전부는 아닙니다. 예를 들어 데이터베이스 연결 클래스는 데이터를 변경하지 않고 데이터베이스에 연결하는 역할만 합니다.
인터페이스는 일반적으로 외부 통화용입니다. 궁극적으로 유용한 작업을 수행하는 일련의 메서드를 작성합니다. 이 일련의 방법의 시작은 인터페이스입니다. 이렇게 이해할 수 있습니다. 예를 들어, 간단한 로그인 인터페이스에서는 사용자 이름과 비밀번호를 입력한 후 확인을 클릭하여 백그라운드 로그인 인터페이스 호출을 시작하고 서버에서 사용자 이름과 비밀번호를 수신하는 방법이 필요합니다. , 또 다른 방법인 비밀번호를 확인해야 합니다. 확인 후 메시지가 클라이언트에 반환됩니다. 로그인이 성공하거나 실패하면 이 일련의 작업이 완료됩니다. 물론 이 작업은 메서드 내에서 수행할 수 있습니다. 즉, 시작점은 인터페이스입니다.
위의 설명은 비교적 간단하지만 완전히 정확하지는 않습니다.
PHP中文网2017-04-18 10:13:05
인터페이스는 기능/동작을 나타냅니다. 예를 들어 사람이 달릴 수 있고 개가 달릴 수 있다면 IRunable 인터페이스를 정의할 수 있습니다. 인터페이스는 구성 요소 간의 분리를 달성하는 좋은 방법입니다.
추상 클래스는 다형성을 달성하고 코드를 더 쉽게 확장할 수 있도록 설계되었습니다.
迷茫2017-04-18 10:13:05
인터페이스는 클래스 그룹에 대한 프로토콜을 정의하는 경향이 있는 반면, 추상 클래스는 구현을 향해 한 걸음 더 나아갔습니다.
예를 들어, 템플릿 메소드 패턴은 추상 클래스를 사용하여 일부 공통 메소드를 구현하는 동시에 구현을 위해 서브클래스에 다른 메소드를 연기합니다.
阿神2017-04-18 10:13:05
간단한 예로 이제 모든 국가의 사람들을 추상화하고 싶다면 인터페이스로 추상화하는 것을 생각하면 되는데 sayHello
:
자, 이제 이 인터페이스를 구현하는 모든 개체는 sayHello
메서드만 구현하면 됩니다. 즉, 다양한 나라의 사람들이 서로 다른 방식으로 인사할 수 있다는 의미입니다.
하지만 이제 비즈니스가 더욱 복잡해졌기 때문에 이러한 사람들에게 cry
, walk
과 같은 일반적인 기능이 필요합니다. 그러면 이때 Human
를 추상 클래스로 추상화하는 것을 고려해야 합니다. 이렇게요:
요약하자면 추상 메소드만 있다면 인터페이스를 사용하세요. 일반적인 구체 메소드가 있다면 추상 클래스를 사용하세요
怪我咯2017-04-18 10:13:05
参考:
Java™ 자습서 :: Java 언어 배우기 :: 인터페이스 및 상속 :: 상속 :: 추상 메서드 및 클래스 :: 추상 클래스와 인터페이스 비교