목차
sealed class/method
method hiding
base class method 호출
접근제한자
method hiding
base class method 호출
접근제한자
본문내용
abstract class/method 와 반대개념
상속되거나 override 될 수 없는 class/method
물론 base class의 method 의 경우라면 virtual 로 선언하지 않는 이상 override 할 수 없다.
하지만 파생 class에서 virtual로 선언된 method를 override 했는데, 이 override 된 method를 더이상 override 할 수 없게 하고자 한다면 sealed 키워드를 override 된 method에 붙여주면 된다.
sealed class AnyBaseClass{ ...} // sealed class
class DerivedClass : AnyBaseClass{...} // Compile Error, inheritance 불가
class AnyBaseClass{
public sealed override void Method1(){ // sealed method
// 재정의되지 않는 어떤 구현 코드
}
}
public class MySubClass : AnyBaseClass{ // 상속 가능
public override void Method1(){ // Compile Error, override 불가
}
}
new 키워드를 사용하여 method를 override 하지 않고, base class의 method를 숨긴다.
컴파일러가 변수를 reference하는 instance의 data type을 검사하여 어떤 method를 호출할 것인지 결정하는 것
sealed method 를 new로 hiding하여 새로 만들 수 있다.
class BaseClass{
public void method1( ) { ... }
public virtual void method2( ) { ... }
}
class DerivedClass : BaseClass{
public new void method1( ) { ... }
public new void method2( ) { ... }
}
class access modifier
public
같은 assembly 외에도 다른 assembly에서 이 class type을 만들 수 있다.
internal(default)
같은 assembly 내에서 살아있는 객체만 class type을 만들 수 있다.
member access modifier
public
파생클래스에서 기초클래스의 public 멤버 접근 가능
private(default)
파생클래스에서 기초클래스의 private 멤버 접근 불가
protected
파생클래스 내의 메소드와 property는 기초클래스의 protected 멤버 접근 가능(상속관계에서만 접근허용)
internal
같은 assembly 내에서만 접근이 가능하다.
상속되거나 override 될 수 없는 class/method
물론 base class의 method 의 경우라면 virtual 로 선언하지 않는 이상 override 할 수 없다.
하지만 파생 class에서 virtual로 선언된 method를 override 했는데, 이 override 된 method를 더이상 override 할 수 없게 하고자 한다면 sealed 키워드를 override 된 method에 붙여주면 된다.
sealed class AnyBaseClass{ ...} // sealed class
class DerivedClass : AnyBaseClass{...} // Compile Error, inheritance 불가
class AnyBaseClass{
public sealed override void Method1(){ // sealed method
// 재정의되지 않는 어떤 구현 코드
}
}
public class MySubClass : AnyBaseClass{ // 상속 가능
public override void Method1(){ // Compile Error, override 불가
}
}
new 키워드를 사용하여 method를 override 하지 않고, base class의 method를 숨긴다.
컴파일러가 변수를 reference하는 instance의 data type을 검사하여 어떤 method를 호출할 것인지 결정하는 것
sealed method 를 new로 hiding하여 새로 만들 수 있다.
class BaseClass{
public void method1( ) { ... }
public virtual void method2( ) { ... }
}
class DerivedClass : BaseClass{
public new void method1( ) { ... }
public new void method2( ) { ... }
}
class access modifier
public
같은 assembly 외에도 다른 assembly에서 이 class type을 만들 수 있다.
internal(default)
같은 assembly 내에서 살아있는 객체만 class type을 만들 수 있다.
member access modifier
public
파생클래스에서 기초클래스의 public 멤버 접근 가능
private(default)
파생클래스에서 기초클래스의 private 멤버 접근 불가
protected
파생클래스 내의 메소드와 property는 기초클래스의 protected 멤버 접근 가능(상속관계에서만 접근허용)
internal
같은 assembly 내에서만 접근이 가능하다.
추천자료
c로배우는알고리즘에서 ROBOT프로그램을 C언어로 바꾸자.
C언어 야구 게임
C언어를 이용해 하노이탑 구현 프로그램
C언어를 이용한 분수의 덧셈과 곱셈을 하는 프로그램
C언어를 이용해 문자열을 추출하는 프로그램
C언어를 이용한 야구게임(숫자맞추기) 프로그램
C언어를 이용한 성적처리(성적관리) 프로그램
C언어를 이용한 [3][3]행렬(3*3행렬), 행렬의 덧셈과 행렬의 곱셈
C언어 처음공부하는 사람들에게 도움이 되는 코딩들(기초부터 포인터까지)
c언어로 만든 typedef 구조체 개념 프로그램
c언어 계산기
c언어로 애니메이션을 만들어 주세요
c언어에서의 포인터(pointer)
C언어로 제작한 푸쉬푸쉬 게임