문제

상속을 위해 초록 대 실제 클래스를 사용할 때 파생 수업에 차이가 있는지 궁금합니다.

실제 클래스 상속이 계층 구조를 생성하는 것처럼 보이는 반면, 추상 클래스 상속은 컴파일러가 파생 클래스에 대한 카피 페이스트 코드 일뿐입니까?

초록 클래스가 계층 구조를 생성합니까? 특별한 키워드를 사용하여 액세스 할 수 있습니까?

기본 키워드를 사용하여 기본 클래스에 액세스한다는 것을 알고 있지만 추상 멤버는 파생 클래스의 원래 멤버처럼 보입니까?

마지막으로 2 간의 성능 차이는 무엇입니까?

도움이 되었습니까?

해결책

예, 추상 클래스가 존재합니다. 컴파일러는 사본 - 페이스트를 수행하지 않습니다. CLR이 여전히 가상 메소드 호출을 수행해야하므로 성능 차이를 찾지 못합니다.

예를 들어 다음 C#:

abstract class Foo { }

class Bar : Foo { }

다음 IL을 생성합니다.

.class private abstract auto ansi beforefieldinit Foo
    extends [mscorlib]System.Object { }

.class private auto ansi beforefieldinit Bar
    extends Foo { }

추상 유형의 개념은 IL의 일부입니다.

다른 팁

유일한 차이점은 추상적 인 기본 클래스를 파생되지 않고 인스턴스화 할 수는 없지만, 비 임금은 할 수 없다는 것입니다. 파생 클래스의 관점에서 볼 때 모든 것이 동일합니다.

초록 클래스와 구체적인 클래스는 (OO) 모델링을위한 도구입니다. 상속 및 대체 규칙과 관련하여 차이가 없습니다. 몇 가지 기술이 있습니다.

  • 추상 클래스는 인스턴스화 할 수 없습니다
  • 초록 방법은 추상 클래스에서만 허용됩니다

그러나 추상 클래스는 비 임금 방법, 속성 및 필드를 가질 수 있습니다.

성능은 수업과 관련이 없지만 초록/가상 방법에 대한 작은 형벌이 있습니다.

추상 클래스의 힘은 구현에 있습니다. 파생 된 클래스의 인스턴스는 필요한 기능을 가질 것이라는 확신을 위해 사용할 수 있습니다.

초록 클래스는 기본 클래스의 원시 형태입니다. 이들은 인스턴스화 할 수 없으므로 개발자가 기능을 사용하기 위해 이러한 클래스에서 파생해야한다는 것을 의미합니다. 추상 클래스에 정의 된 추상 방법은 자식 수업에서 구현해야합니다. 따라서 추상 클래스에서 파생 된 아동 수업에 존재 해야하는 방법을 구현할 수 있습니다. 따라서 개발자가 파생 클래스에서 사용자 정의 할 수있는 객체의 기본 요소를 파생 된 클래스에서 정의합니다.

비 추상 클래스는 클래스 기능을 연장하는 데 가장 적합한 반면, 비정규 클래스의 내용을 계속 사용하는 데 사용됩니다. 모든 비 개인적인 구성원과 방법은 파생 클래스에서 액세스 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top