«inheritance» 태그된 질문

상속은 프로그래밍 언어 지원에 따라 기존 객체의 코드를 재사용하거나 기존 객체의 하위 유형 또는 둘 다를 설정하는 방법입니다.

4
동적 언어의 상속과 믹스 인?
동적 언어의 믹스 인보다 상속 패턴을 언제 선호해야합니까? 믹스 인이란 런타임에 객체에 함수와 데이터 멤버를 삽입하는 것과 같이 실제 적절한 믹싱을 의미합니다. 예를 들어 믹스 인 대신 프로토 타입 상속을 언제 사용 하시겠습니까? mixin, 의사 코드의 의미를 더 명확하게 설명하기 위해 asCircle(obj) { obj.radius = 0 obj.area = function() { …

1
Bertrand Meyer (/ did)가 왜 서브 클래 싱이 "클로즈드"모듈을 확장 할 수있는 유일한 방법이라고 생각합니까?
Meyer의 Object-Oriented Software Construction (1988)에서 개방 / 폐쇄 원칙 을 다음과 같이 정의합니다 . 확장이 가능한 모듈은 열려 있다고합니다. 예를 들어, 포함 된 데이터 구조에 필드를 추가하거나 수행하는 기능 세트에 새 요소를 추가 할 수 있어야합니다. 다른 모듈에서 사용할 수있는 모듈은 닫혀 있다고합니다. 이것은 모듈에 잘 정의되고 안정적인 설명이 제공되었다고 …

3
"사각이 사각형에서 상 속됨"역설에 대한 특정 이름이 있습니까?
OOP의 특정 실패는 Rectangle에서 상속되는 Square 클래스와 함께 표시됩니다. 여기서 논리적으로 Square는 Rectangle의 특수화이므로 Rectangle에서 상속해야하지만 Square의 길이나 너비를 변경하려고하면 모든 것이 분리됩니다. 그 사건에 무슨 문제가 있는지 설명하는 구체적인 용어가 있습니까?

5
상속을 사용할 때 '부울 필드'만 사용하는 경우
Rails 애플리케이션에서 알림을 추가하고 있습니다. 이 중 일부는 다음과 같습니다 blocking. 자원에 대한 일부 정보가 누락되어 추가 된 자원의 진행을 중지합니다. 다른 알림은 간단한 알림이며 정보 만 제공합니다. 오늘 저는 우리 팀에서 다른 프로그래머와 토론했습니다. 다음과 같이 상속 구조를 만들었습니다. 그러나 blocking각 알림에 부울 리턴 메소드로 추가 하고 알림 상위 …

4
Java에 '서브 클래스 전용'액세스 수정자가없는 이유는 무엇입니까?
Java에는 메소드에 사용할 수있는 네 가지 액세스 수정자가 있습니다. public -모든 클래스에서이 방법을 사용할 수 있습니다. protected -동일한 패키지의 클래스와 모든 패키지의 서브 클래스가이 메소드를 사용할 수 있습니다. private -이 클래스 만이 메소드를 사용할 수 있습니다. no modifier ( "package private")-동일한 패키지의 클래스 만이 메소드를 사용할 수 있습니다. 자주 일어나는 …

4
공통 필드를 기본 클래스로 이동하는시기
저는 현재 두 개의 파생 클래스를, A그리고 B모두가 공통으로 필드를 가지고 있고 그것이 기본 클래스에 올라가 여부를 결정하기 위해 노력하고 있음. 이것은 기본 클래스에서 참조하지 않고, 다른 클래스가 파생 길 아래에 어떤 시점에서, 경우에 말을 결코 C, 그건이없는 _field1"최소 특권"(또는 무언가)의 주요되지는 경우에 위반 될 다음, 였다? public abstract class …

14
상속의 유용성을 어떻게 설명 할 수 있습니까? [닫은]
현재로서는이 질문이 Q & A 형식에 적합하지 않습니다. 답변, 사실, 참고 자료 또는 전문 지식에 의해 답변이 뒷받침 될 것으로 예상되지만이 질문은 토론, 논쟁, 여론 조사 또는 광범위한 토론을 요구할 것입니다. 이 질문을 개선하고 다시 열 수 있다고 생각 되면 도움말 센터 를 방문하여 안내를 받으십시오 . 휴일 육년 전 …

1
상속 계층에서 Liskov 대체 원칙을 확인하는 방법은 무엇입니까?
이 답변에서 영감을 얻었습니다 . 리스 코프 치환 원칙은 필요 있음 하위 유형에서는 전제 조건을 강화할 수 없습니다. 하위 유형에서는 사후 조건을 약화시킬 수 없습니다. 상위 유형의 변형은 하위 유형으로 유지되어야합니다. 히스토리 제한 사항 ( "히스토리 규칙"). 객체는 그 방법 (캡슐화)을 통해서만 수정 가능한 것으로 간주됩니다. 서브 타입은 수퍼 타입에 …

6
보호 된 방법에 대한 실제 시나리오
오늘 나는 기본적으로 protected부모의 비공개 메소드를 호출 할 필요가 거의 없기 때문에 기본적으로 C ++ 코드에서 메소드를 사용하지 않는다는 것을 알았습니다 . 템플릿 메소드 패턴에서 Java로 protected를 사용하지만 C ++에서 개인 메소드를 대체 할 수 있기 때문에 필요하지 않습니다 protected. 그렇다면 protectedC ++ 코드에서 메소드 를 사용하려는 실제 시나리오는 무엇 …

8
“상속보다 작곡 선호”-서명 변경을 방어해야하는 유일한 이유는 무엇입니까?
이 페이지 는 다음과 같은 주장으로 상속에 대한 구성을 옹호합니다 (내 말로 표현). 서브 클래스에서 재정의되지 않은 수퍼 클래스의 메소드 서명 변경으로 인해 상속을 사용할 때 여러 곳에서 추가 변경이 발생합니다. 그러나 컴포지션을 사용할 때 필요한 추가 변경은 단일 위치에만 있습니다 : 서브 클래스. 이것이 실제로 상속보다 구성을 선호하는 유일한 …

2
래퍼에 많은 통과 함수를 작성하지 않으려면 어떻게해야합니까?
공통 기본 유형의 다른 클래스를 래핑하는 클래스가 있습니다. 기본 유형 인터페이스가 상당히 크기 때문에 많은 통과 함수를 작성해야합니다. 나는 이것을 피할 수있는 방법을 찾고 있습니다. 예를 들어 보자. Car / \ Volvo VolvoWithTrailer 이제 VolvoWithTrailer의 자동차 인터페이스에서 각각의 모든 함수를 구현하고 더 낮은 값을 반환하는 GetMaxSpeed ​​()를 제외하고 래핑 된 …

3
상속보다는 구성
소프트웨어 엔지니어링을 가르치고 혼란스러워하는 상충되는 정보에 대비하려고합니다. 나는 OOP를 배우고 추상 클래스 / 인터페이스가 무엇인지, 그것들을 사용하는 방법을 배우고 있지만, 상속보다 구성을 선호해야한다는 것을 읽고 있습니다. 나는 한 클래스가 다른 클래스의 객체를 작성 / 생성하여 새로운 객체의 기능을 활용 / 상호 작용할 때 구성을 이해합니다. 그래서 내 질문은 ... 추상 …

2
파생 클래스가 원시 동적 메모리를 할당하지 않는 경우 기본 클래스에 가상 소멸자가 필요한 이유는 무엇입니까?
다음 코드는 메모리 누수를 유발합니다. #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) { …

5
상속과 null 값을 가진 추가 속성
선택적 필드가있는 클래스의 경우 상속 또는 널 입력 가능 특성을 사용하는 것이 더 낫습니까? 이 예제를 고려하십시오. class Book { private String name; } class BookWithColor extends Book { private String color; } 또는 class Book { private String name; private String color; //when this is null then it is …
12 java  inheritance  class  null 

3
인터페이스가 다른 인터페이스에서 상속 된 경우 '비어있는'것으로 간주됩니까?
빈 인터페이스는 일반적으로 내가 알 수있는 한, 특히 언어와 같은 속성이 지원되는 곳에서는 나쁜 습관으로 간주됩니다. 그러나 다른 인터페이스에서 상속 된 인터페이스는 '비어있는'것으로 간주됩니까? interface I1 { ... } interface I2 { ... } //unrelated to I1 interface I3 : I1, I2 { // empty body } 구현이 것을 아무것도 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.