728x90
반응형

inheritance 9

JAVA Implements vs extends 차이점과 사용시기

질문 : 구현 vs 확장 : 언제 사용합니까? 차이점이 뭐야? 이해하기 쉬운 언어 또는 일부 기사 링크로 설명하십시오. 답변 extends 는 클래스를 확장 하기위한 것입니다. implements 은 인터페이스 를 구현하기위한 것입니다. 인터페이스와 일반 클래스의 차이점은 인터페이스에서 선언 된 메서드를 구현할 수 없다는 것입니다. 인터페이스를 "구현"하는 클래스 만이 메소드를 구현할 수 있습니다. 인터페이스에 해당하는 C ++는 추상 클래스입니다 (정확히 동일하지는 않지만 거의). 또한 Java는 클래스에 대한 다중 상속을 지원하지 않습니다. 이것은 여러 인터페이스를 사용하여 해결됩니다. public interface ExampleInterface { public void doAction(); publ..

상속성보다 컴포지션을 선호하는 이유

질문 : 상속보다 구성을 선호하십니까? 상속보다 구성을 선호하는 이유는 무엇입니까? 각 접근 방식에는 어떤 절충점이 있습니까? 언제 구성보다 상속을 선택해야합니까? 답변 상속성보다 컴포지션을 선호하는 이유는 나중에 수정하기 쉽기 때문입니다. 그러나 항상 compose-always 접근 방식을 사용하지 마십시오. 컴포지션을 사용하면 종속성 주입 / 세터를 사용하여 즉시 동작을 쉽게 변경할 수 있습니다. 상속은 대부분의 언어가 둘 이상의 유형에서 파생되는 것을 허용하지 않기 때문에 더 엄격합니다. 따라서 TypeA에서 파생되면 거위가 다소 조리됩니다. 위의 내 산성 테스트는 다음과 같습니다. TypeB가 TypeA가 예상되는 곳에 TypeB를 사용할 수 있도록 TypeA의 완전한 인터페이스 (모든 공용 메서..

개발관련/other 2021.12.07

파이썬에서 슈퍼 생성자를 호출하는 방법

질문 : 파이썬에서 슈퍼 생성자를 호출하는 방법은 무엇입니까? class A: def __init__(self): print("world") class B(A): def __init__(self): print("hello") B() # output: hello 다른 모든 언어에서 슈퍼 생성자로 작업 한 것은 암시 적으로 호출됩니다. 파이썬에서 어떻게 호출합니까? 나는 super(self) 기대하지만 이것은 작동하지 않습니다. 답변 다른 답변과 함께 슈퍼 클래스 메서드 (생성자 포함)를 호출하는 여러 방법이 있지만 Python-3.x에서는 프로세스가 단순화되었습니다. Python-2.x class A(object): def __init__(self): print "world" class B(A): def ..

[C++] private, public 및 protected 상속의 차이점

질문 : 개인, 공용 및 보호 상속의 차이점 C ++ 에서 public , private 및 protected 상속의 차이점은 무엇입니까? 내가 찾은 모든 질문은 특정 사례를 다룹니다. 답변 이 질문에 답하기 위해 먼저 회원의 접근자를 제 말로 설명하고 싶습니다. 이미 알고있는 경우 "다음 :"제목으로 건너 뜁니다. 내가 알고있는 세 가지 접근자가 있습니다 : public , protected 및 private . 허락하다: class Base { public: int publicMember; protected: int protectedMember; private: int privateMember; }; Base 인식하는 모든 것은 Base publicMember 가 포함되어 있다는 것도 알고 있습니다...

파이썬 클래스가 객체를 상속하는 이유

질문 : 파이썬 클래스는 왜 객체를 상속합니까? object 에서 상속하는 이유가 있습니까? 방금이 작업을 수행하는 코드를 찾았고 그 이유를 찾을 수 없습니다. class MyClass(object): # class code follows... 답변 Python 3에서는 Python 2와 3 간의 호환성을 제외하고는 이유가 없습니다 . Python 2에서는 여러 가지 이유가 있습니다. Python 2.x story: object 의 존재 여부에 따라 두 가지 스타일의 클래스가 있습니다. "클래식"스타일 클래스 : 기본 클래스로 object >>> class ClassicSpam: # no base class ... pass >>> ClassicSpam.__bases__ () "새로운"스타일 클래스 : 직..

Java 제네릭이 암시 적으로 다형성이 아닌 이유

질문 : 목록 List의 하위 클래스 ? Java 제네릭이 암시 적으로 다형성이 아닌 이유는 무엇입니까? Java 제네릭이 상속 / 다형성을 처리하는 방법에 대해 약간 혼란 스럽습니다. 다음 계층을 가정합니다. 동물 (부모) 개 - 고양이 (어린이) doSomething(List animals) 메서드가 있다고 가정합니다. 상속 및 다형성의 모든 규칙에 따라 List 가 List 이고 List 이 List 하므로 둘 중 하나를이 메서드에 전달할 수 있습니다. 별로. doSomething(List

AngularJS에서 범위 prototypal / prototypal inheritance 의 의미

질문 : AngularJS에서 범위 프로토 타입 / 프로토 타입 상속의 뉘앙스는 무엇입니까? API 참조 범위 페이지에 다음 내용이 표시됩니다. 범위는 상위 범위에서 상속 할 수 있습니다. 개발자 가이드 범위 페이지 에는 다음과 같은 내용이 있습니다. 범위 (원형)는 부모 범위에서 속성을 상속합니다. 그렇다면 자식 범위는 항상 부모 범위에서 프로토 타입 적으로 상속됩니까? 예외가 있습니까? 상속 할 때 항상 일반적인 JavaScript 프로토 타입 상속입니까? 답변 빠른 답변 : 일반적으로 자식 범위는 프로토 타입 적으로 부모 범위에서 상속되지만 항상 그런 것은 아닙니다. 이 규칙에 대한 한 가지 예외는 scope: { ... } 지시문입니다.이 경우 프로토 타입 적으로 상속되지 않는 "격리"범위가 생성..

파이썬의 자식 클래스에서 부모 클래스의 메서드를 호출하는 방법

질문 : 파이썬의 자식 클래스에서 부모 클래스의 메서드를 어떻게 호출합니까? Python에서 간단한 개체 계층을 만들 때 파생 클래스에서 부모 클래스의 메서드를 호출 할 수 있기를 원합니다. Perl과 Java에는 이에 대한 키워드가 있습니다 ( super ). Perl에서는 다음과 같이 할 수 있습니다. package Foo; sub frotz { return "Bamf"; } package Bar; @ISA = qw(Foo); sub frotz { my $str = SUPER::frotz(); return uc($str); } Python에서는 자식에서 명시 적으로 부모 클래스의 이름을 지정해야하는 것으로 보입니다. Foo::frotz() 와 같은 작업을 수행해야합니다. 이 동작은 깊은 계층 구조를 ..

C ++에서 인터페이스를 선언하는 방법

질문 : C ++에서 인터페이스를 어떻게 선언합니까? 인터페이스를 나타내는 클래스를 어떻게 설정합니까? 이것은 추상 기본 클래스입니까? 답변 bradtgmurray 의 답변을 확장하려면 가상 소멸자를 추가하여 인터페이스의 순수 가상 메서드 목록에 한 가지 예외를 만들 수 있습니다. 이를 통해 구체적인 파생 클래스를 노출하지 않고도 포인터 소유권을 다른 당사자에게 전달할 수 있습니다. 인터페이스에는 구체적인 멤버가 없기 때문에 소멸자는 아무것도 할 필요가 없습니다. 함수를 가상과 인라인으로 정의하는 것은 모순되는 것처럼 보일 수 있지만 저를 믿으십시오. 그렇지 않습니다. class IDemo { public: virtual ~IDemo() {} virtual void OverrideMe() = 0; }; ..

728x90
반응형