[C#.NET] 클래스 - 부모와 자녀의 파라메터 값을 중복 허용
만약 부모와 자녀가 갖고 있는 공통의 값이 예를 들자면 핸드폰이 있다고 칩시다.
cel이라는 파라메터가 둘 다 필요하게 될 것입니다.
자녀는 부모 없이 존재가능한가요?
즉 다시말하면 부모와 자녀와의 관계에서 공통적으로 갖는 특색이 중복되어야만 할 상황이 생길 때 해결하는 방법입니다.
1. 기본 클래스 방법(New 클래스를 이용)
이 예제에서 기본 클래스 BaseC 및 파생 클래스 DerivedC는 동일한 필드 이름 x를 사용하므로 상속된 필드의 값이 숨겨집니다.
이 예제는 new 한정자의 사용법을 보여 줍니다. 또한 정규화된 이름을 사용하여 기본 클래스의 숨겨진 멤버에 액세스하는 방법을 보여 줍니다.
public class BaseC
{
public static int x = 55;
public static int y = 22;
}
{
new public static int x = 100;
{
Console.WriteLine(x);
Console.WriteLine(BaseC.x);
Console.WriteLine(y);
}
}
100
55
22
이 예제에서 중첩 클래스는 기본 클래스에서 이름이 동일한 클래스를 숨깁니다. 이 예제에서는 new 한정자를 사용하여 경고 메시지를 제거하고 정규화된 이름을 사용하여 숨겨진 클래스 멤버에 액세스하는 방법을 보여 줍니다.
using System;
public class BaseC
{
public class NestedC
{
public int x = 200;
public int y;
}
}
{
new public class NestedC
{
public int x = 100;
public int y;
}
{
NestedC c1 = new NestedC();
BaseC.NestedC c2 = new BaseC.NestedC();
Console.WriteLine(c2.x);
}
}
출력 : 100
200
using System;
class Player
{
virtual public void showMessage()
{
Console.WriteLine("Player 클래스의 메시지");
}
}
class StarcraftPlayer : Player
{
public override void showMessage()
{
Console.WriteLine("StarcraftPlayer");
}
}
class Program
{
static void Main()
{
StarcraftPlayer sp = new StarcraftPlayer();
sp.showMessage();
Player p = new Player();
p.showMessage();
}
}
'소프트웨어(SW) > MS - Visual C#.NET' 카테고리의 다른 글
[C#.NET] Base64 (8) | 2010.12.22 |
---|---|
[C#.NET] 클래스 - Overriding 개념 (9) | 2010.11.24 |
[C#.NET] Out과 Ref의 차이점 (6) | 2010.11.19 |
[C#.NET] foreach 문 (6) | 2010.11.17 |
[C#.NET] 구조체 설명 (6) | 2010.11.17 |