인터페이스와 추상 클래스에 관한 문제

1. 하위 클래스는 모든 메소드의 인터페이스를 (필수 여부) 인터페이스를 구현해야합니다 구현하는 경우, 그것은 장점 추상 클래스 만 필요한 방법이 될 수 구현할 필요가 추상 클래스, 상속하는 경우

경우 2 인터페이스에 정의 된 메소드 이름은 서브 클래스의 모든 그들이 불이익 인터페이스 이름이 존재하지 않는 방법을 구현하기 때문에이 인터페이스는 분명히 컴파일 할 수 없습니다 구현, 변경, 그리고 추상 클래스가 존재하지 않는 문제는, 단지 새로운 방법 (이전 방법 인터페이스)를 추가하는 것은의 하위 클래스

는 인터페이스가 장점을 가지고보다 더 추상적 인 것, 3. 앞의 두를 볼 수 있지만, 그것은 돌이킬 수없는 단점이있다 : 그것은이다 서브 클래스는 하나의 부모를 가질 수 있습니다. A B 상기는 모든 기능 방법 A 및 B를 가지며, 따라서. 연장하지만,이 기능이 C. 시간하고자 그것이 달성 할 수없는 것은 C를 확장, 일부 우회를 취할 필요가있다. 현재 시스템 아키텍처 추상 (변명 추상 클래스)에 대한 경향보다는 특정 프로그램이며, 세분의 기능을합니다. 이것은 여러 인터페이스는, 분명히 추상 클래스는 이러한 기능을 제공 할 수 없습니다 구현에 의해 달성 될 필요가있다. 시스템의 관점에서 재구성, 특정 클래스에 대한 추상적 인 인터페이스는 매우 편리합니다. 구체적인 클래스를 정의하는 하나의 인터페이스, 모든 메소드를 작성,이 특정 클래스에서 그것을 구현하는 인터페이스입니다. 그들은 C는 확장 할 수 없기 때문에 당신이 추상 추상 클래스 D 원한다면 추상 클래스 복잡한 더 말하자면, B는 확장보다, C는 B의 C를 확장합니다, 그것은 처음부터 시작하는 최상위 A를 찾을 필요 D
-------------------------------
모든 방법을 구현하는 데 필요하지 않은 경우 추상 클래스를 상속하지만,이 추상의 서브 클래스 , 인스턴스화 할 수없는
-------------------------------
또한 평균 사용 인터페이스를 만들지 만, 추상 클래스는 각각 자신의 장점을 가지고해야, 쓸모없는 말은 아니다. 가장 좋은 방법은 인터페이스를 작성한 다음 기본에게 인터페이스를 구현하는이 추상 클래스를 수행하거나 원하는대로 선택할 수 인터페이스를 구현하는 추상 클래스를 상속하는 것입니다,하지만 단점은 너무 많은 클래스를 작성하는 것입니다
---------- ---------------------
이점 추상 클래스 : B가 상속 C는, 가정 클래스 B를 계승 C의 fun1 구현 코드의 메소드와 동일한 유전 코드는에 작성 될 수있다, BC 주 단순히 다시 코드를 작성하지 않고, 부모 클래스의 방법이 할 수있는 전화, BC 및 다른 방법은 구체적인 구현은 다음 방법 개요를 작성, 같은 코드가 아닙니다, 동일 하였다.
-------------------------------
문장 좋은 단어 등, 지속적으로 추상적 인 새로운 확장 다른 클래스 코드의 개선 재사용을 달성 상속하지만, 단점은 너무 견고위한 클래스. 우리의 새로운 방법 몇 가지를 대상으로
--------------- ----------------
추상적의 가장 큰 결함이있는 경우에만 인터페이스를 통해 얻을 수있는 인터페이스 분리를 구현하는
---------------- ---------------
인터페이스 다중 상속, 지구 사람들이 물건을 대중의 인터페이스에 있음을 알고있다.
-------------------------------
깔끔한 집주인은 게시 :

1. 서브 클래스가 인터페이스를 구현, 서브 클래스 경우 모든 방법에 대한 비 추상 클래스 (이 필요한지) 인터페이스를 구현해야하며, 하위 클래스는 추상 클래스 인 경우

달성 될 수 있고, 상기 인터페이스는 상기 방법으로 구현 될 수있다.
   하위 클래스는 추상 클래스 인 경우, 그것이 실현 될 수 있으며, 비 추상 클래스의 하위 클래스해야 모든 추상 기본 클래스 메서드 구현 경우 서브 클래스는, 추상 클래스를 상속

추상 메소드 이제 기본 클래스가 될 수있다 달성하지.
   // 두 경우 모두 같은 보이지만이 아닌 추상 메소드 추상 클래스 일 수 있으며, 인터페이스는 모든 추상 메소드해야합니다.

인터페이스에 정의 된 메소드의 이름이 변경된 경우 2. 모든 서브 클래스는이 인터페이스는 분명 그 방법은 실제가 아닌 추상 서브 클래스 인터페이스에서 이름이 변경되지 않기 때문에 컴파일 할 수 없습니다 구현하는

지금.
   당신이 추상 클래스 추상 메소드 이름, 같은 컴파일러의 서브 클래스를 수정하는 경우, 비 추상적 인 방법을 수정하지만,하지만 경우 문제없이 컴파일합니다.
   // 두 볼 것은 거의 동일하지만 방법은 추상적이고 차이의 비 추상적를 수정할 수 있습니다.

에 관하여 3.
   비 추상적 인 방법은, 수정 문제없이 컴파일 할 경우 추상적 인 방법을 수정하면 추상 클래스의 이름이 같은 서브 클래스는, 그러나 컴파일, 이러한 불확실성은 정확하게 치명적인의 추상 클래스입니다

약점.

--------------------------------

   우리는 그것을 통과하지 수있는 방법? 초기라는 이름의 AAA는, 서브 클래스 AAA의 방법을 상속하는 대신 AAA 등급 BBB의 추상 클래스는, AAA 서브 클래스했을 때, 그리고 두 가지 방법 BBB

   // 처음에 (이름은 추상적이어야한다.) AAA라는 이름의, 서브 클래스는 AAA, 대신 AAA 등급 BBB의 추상 클래스는, AAA 서브 클래스

(하위 클래스를, 다음 단지 AAA를위한 새로운 방법, 그리고 추상 클래스가를 추상 메소드는 서브 클래스에서 구현되지 BBB의, 물론) 컴파일 할 수 없습니다
--------------------------------- -------
나는 우리가 인터페이스의 너무 일방적 인 이해 인터페이스가 이해 될 수 있다는 것을 발견 : 그냥 클래스 아니라,이 규범 ~ ~ ~

하는 시스템과 같은 새로운 회원들에 의해 대체되는 오래된 회원이 있었지만, 시스템은 여전히 잘 작동, 왜 할 수 있습니까? 회원이 소프트웨어의 정상적인 작동이, 인터페이스가 그런 역할을 할 수 있도록 표준화 된 시스템을 준수해야하기 때문에이 (가 구성원이 특정 작업 (코딩) 할 대체하지 않습니다하지만 회원들이 무엇을 말하고, 인터페이스입니다 방법)

다음 및 세부 사항의 일부, 즉 유일한 매개 변수 유형의 정의 방법, 리턴 타입, 메소드 이름을 인터페이스하는 것입니다, 어떤 종류의 일 어떤 자원 (매개 변수 유형) 도구의 종류 (법의 이름으로 수행) (새 멤버를 알리는 것입니다 값 유형)

의 출발점, 몇 가지 또는 관련이없는 공공 추상 클래스 인터페이스 인 추상 클래스 인터페이스 사양을 기반으로

가장 중요한 역할은 유지 될 수있다, 더 나은 인터페이스는 시스템 무결성을 통해 결합 인터페이스는 것을 성, 확장 성
-----------------------------------------
하지만 인터페이스는 것 추상적 분리와 결합하는 경우 잠재적으로 적어도 하나의 클래스의 증가, 그것은 둘 이상의 아웃이다. 다른 사람들 또한이 모델은 괜찮 이해한다면 다른 사람들은 그것을 이해하지 않는 경우? 도 대폭 클래스 (원래 약간 초기 시스템의 일반적인 클래스 번호)의 구조의 복잡성을 증가시킨다.
----------------------------------------
그 사용 인터페이스와 추상 클래스는 코드의 양을 줄일 수 또 다른 오해는

필연적으로 추상화 계층 및 구현 계층으로 변경하는 변경됩니다, 개발 과정에 따라 추상화 계층 시스템, 작업 부하도 기하 급수적으로 증가 할 것이다
다시 유지 보수 및 개발의 후반부에서 이러한 시스템의 장점은, 쉽게 될 것입니다 훨씬 덜 변경 명백 할 수있다, 많은 사람들이 경험을 가지고 : 프로그램에 대한 시간의 함수를 추가 할 때 갑자기, 다른 기능은 그렇게 나쁘지 발견하고, 추상화 잘 설계된 시스템의 층이 경우 수 없지만이 가능한 상황의 이전 디자인 추상화 계층 예측에 따라 달라집니다 경우 포괄적 그렇지 않으면, 인터페이스 및 코드 변경은 의심 할 여지없이 악몽 변경 모두가 경험 디자이너의 양의 문제이다.

이들은 당신이 내가 미래의 과정에서 이러한 프로젝트를 수행의 경험에 대해 말을 기억 만이 쓸 수 없습니다, 제가 밖으로 줄 수있는 몇 가지 구체적인 예를 줄 수 있도록, 인터페이스 내 현재의 이해입니다
---- -----------------------------
사실, 저는 개인적으로 우리가 OO 디자인을 들고 있다고 생각, 우리는 더 상세한에게 더 증가 분석 우리가 사용하는 코드의 정밀도. 이 때, 우리는 시작하는 프레임 워크의 모든 상세한 이해가 있어야합니다. 이것은 매우 좋은 사용자 경험이다.
--------------------------------
이민자를위한, 그래서 연습을 안내하는 새로운 이론을 달성하기 가장 어려운, 당신은 무엇을 잘 사용하려면 무엇. . . 라인을 설정할 수 있습니다 프로그램을 확인합니다. 자연스럽게 불편 이유에 대해 생각하는 것, 더 많은 연습 때까지 기다리십시오, 그래서 불편 쓰기 프로그램이 시작 생각합니다. . 불편 느꼈다하지 않은 경우, 그래서이었다. .

HTTPS : //www.cnblogs.com/200831856/archive/2009/11/25/interface_abstract.html 재현

추천

출처blog.csdn.net/weixin_34090562/article/details/93711383