목차
Polymorphism (다형성) 정의
다형성 예제1 - 부모 클래스의 메서드로 작업 수행
다형성 예제2 - 사용자 입력값 따라 다른 작업 수행
Polymorphism (다형성) 정의
1.
다형성 (Polymorphism) : "다양한 형태" 의미.
즉,
상속 통해 서로 관련된 많은 클래스 있을 때,
부모 (메서드・속성)으로 다른 작업을 수행.
※ 부모 클래스 변수에 자식 클래스의 인스턴스 할당.
※ 부모 클래스 배열변수에 자식클래스 인스턴스 담아 사용할 때 유용.
2.
장점 : 기존 코드 재사용 통해, 작업 세분화 가능.
3.
Java 와 달리, 아래 키워드 추가해야 정상 출력 .
※ 부모 클래스 메서드에 virtual 키워드 추가.
※ 자식 클래스 메서드에 override 키워드 추가..
4.
상속과 다형성 사용 이유 : 코드 재사용에 유용.
(∵ 새 클래스 생성 시, 기존 클래스의 필드와 메서드 재사용 가능.)
다형성 예제1 - 부모 클래스의 메서드로 작업 수행
Coding 부모클래스에 studyCoding 메서드 있을 때,
하위 클래스에서 동일 메서드로 다른 작업 수행 가능.
[예제] Program.cs 생성.
using System;
namespace Homzzang
{
class Coding
{
public virtual void studyCoding ()
{
Console.WriteLine("코딩언어 강의");
}
}
class Html : Coding
{
public override void studyCoding ()
{
Console.WriteLine("HTML : 기본틀");
}
}
class Css : Coding
{
public override void studyCoding ()
{
Console.WriteLine("CSS : 디자인");
}
}
class Program
{
static void Main(string[] args)
{
Coding coding = new Coding ();
Coding html = new Html();
Coding css = new Css();
coding.studyCoding ();
html.studyCoding ();
css.studyCoding ();
}
}
}
결과값:
코딩언어 강의
HTML : 기본틀
CSS : 디자인
PS.
위 코드에서 굵은색 코드 (virtual, override) 없는 경우 결과값:
코딩언어 강의
코딩언어 강의
코딩언어 강의
이유:
(virtual, override) 코드가 없으면,
부모 클래스의 메서드가 자식 클래스의 메서드를 덮어쓰기 때문임.
이를 막기 위해,
부모 클래스에 virtual 코드, 자식 클래스에 override 코드 각각 추가.
다형성 예제2 - 사용자 입력값 따라 다른 작업 수행
사용자 입력값에 따라 동일 메서드로 다른 작업 수행.
[예제] Program.cs
using System;
namespace Homzzang
{
class Coding
{
public virtual void studyCoding()
{
Console.WriteLine("코딩언어 강의");
}
}
class Html : Coding
{
public override void studyCoding()
{
Console.WriteLine("HTML : 기본틀");
}
}
class Css : Coding
{
public override void studyCoding()
{
Console.WriteLine("CSS : 디자인");
}
}
class Program
{
static void Main(string[] args)
{
int input;
Console.WriteLine("HTML: 1, CSS: 2 ?");
input = Convert.ToInt32(Console.ReadLine());
if (input == 1)
{
Coding html = new Html();
html.studyCoding();
}
if (input == 2)
{
Coding css = new Css();
css.studyCoding();
}
}
}
}
결과값:
사용자가 1입력 시 : HTML : 기본틀
사용자가 2입력 시 : CSS : 디자인
주소 복사
랜덤 이동
최신댓글