티스토리 뷰

C#

모든 타입의 조상 System.Object

란텔 2016. 1. 22. 20:46

Object는 모든 클래스의 최상위 조상이다.

c#도 모든 객체지향언어가 그렇듯 단일 상속만을 지원하는데..

만약 클래스 A와 클래스 B가 있는데

클래스 A는 부모클래스

클래스 B는 자식클래스라 하자.


c#컴파일러는 컴파일시 아무것도 상속 받고 있지 않는 클래스에 대해 System.Object클래스를 상속한다.

클래스 B의 부모는 A클래스이지만 클래스 A의 부모는 아무것도 없기 때문에 결국 컴파일시 

class A : Object

{


}

같이 변한다.


종국에는 상속관계도에 따라

Object class - A class - B class

와 같이되므로 A와 B 클래스 둘 전부 Object를 최고 조상 클래스로 갖게된다.


Object클래스는 참조형식이지만 값형식이 되기도 한다.

값형식일 경우는 System.ValueType을 상속 받고 있는 모든 타입을 값형식으로 보고,

이 외에는 참조형식으로 본다.

다음은 System.ValueType을 상속받고 있는 타입들이다.

bool

sbyte, byte

short, ushort

int, uint

long, ulong

float, double

decimal

char

enum, struct를 이용해 정의하는 타입들


System.Object클래스에는 다음 네가지의 메서드 멤버를 가지고 있다.

public virtual bool Equals(Object obj);

public virtual int GetHashCode();

public virtual String ToString();

public virtual Type GetType();



- ToString() - 

이 메서드는 참조변수가 속한 (네임스페이스명.클래스명)의 형식으로 문자열을 반환한다.

virtual이기 때문에 대상 참조변수 인스턴스가 사용자정의 클래스라면 오버라이딩해서 다른 문자열을 반환하게 할 수 있다.



- GetType() - 

이 메서드는 참조변수가 속한 (클래스명)의 형식으로 반환한다.

ToString()을 재정의 했을 때를 대비해 FullName을 사용해 (네임스페이스명.클래스명)의 형식으로 문자열을 가져올 수 있다.



 



Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday