신입 개발자 공부 과정

1월3~4일 추가로 공부한 것 본문

C#/모르는 내용들 공부

1월3~4일 추가로 공부한 것

Lewisjkim 2022. 1. 4. 01:18

36.메서드 오버로딩

다양성을 구현하는 방법 중 하나로

동일한 이름을 가진 여러 메서드를 정의 하는 것

 

오버로딩 방법=-매개변수의 수 변경

public void Add(int a, int b)
{}
public void Add(int a, int b, int c)
{}

-다른 타입의 매개변수 사용

public void Add(int a, int b)
{}
public void Add(float a, int b)
{}
public void Add(float a, float b)
{}

-서로 다른 타입의 매개변수 순서 변경

public void Add(float a, int b)
{}
public void Add(int a, float b)
{}

**단, 반환 타입(void, int, float)이 다른 매서드에서의 오버로딩을 허용하지 않는다

 

생성자 오버로딩=

public class Hero
{
	public Hero()
    {}
    public Hero(string name)
    {}
    public Hero(string name, int damage, int maxHP)
    {}
}
Hero hero1 = new Hero();
Hero hero1 = new Hero("홍길동");
Hero hero1 = new Hero("임꺽정, 3, 10");

 

 

37-1.상속, protected

중요한 객체지향 프로그래밍 중 하나

다른 클래스에 정의된 동작을 재사용, 확장 및 수정하는 새 클래스를 만들 수 있다

기본 클래스(부모)=맴버가 상속되는 클래스

파생 클래스(자식)=해당 맴버를 상속하는 클래스

부모클래스의 메서드나 맴버변수도 사용 가능하다

class Marine : TerranUnit// 파생:기본

 

protected 접근제한자

protected 맴버는 해당 클래스 내에서 파생 클래스 인스턴스가 액세스할 수 있습니다.

즉, 파생클래스만 접근 가능

   37-2. virtual, override, base

virtual 키워드는 기본 클래스에서 정의된 메서드를 파생 클래스에서 재정의하도록 허용하는 것

virtual 한정자는 static, abstract, private 한정자와 함께 사용할 수 없다

override한정자는 상속된 메서드의 구현을 확장하거나 수정하는데 필요

ex)테란 유닛 공격=유닛 별로 공격 방법이 다름

-TerranUnit

class TerranUnit
{
	public virtual void Attack()
    {
    
    }
}

-Marine

class Marine : TerranUnit
{
	public override void Attack()
    {
    	Console.WriteLine("총으로 공격!");
    }
}

-Firebat

class Firebat : TerranUnit
{
	public override void Attack()
    {
    	Console.WriteLine("화염방사기로 공격!");
    }
}

 

base키워드는 파생 클래스 내에서 기본 클래스의 맴버에 엑세스하는 데 사용

class Firebat : TerranUnit
{
	public override void Attack()
    {
    	bas.Attack();
    	Console.WriteLine("화염방사기로 공격!");
    }
}

 

 

   37-3. 생성자 연결

 

'C# > 모르는 내용들 공부' 카테고리의 다른 글

c# 화살표 함수 =>  (0) 2022.01.13
c# 재귀함수  (0) 2022.01.13
C# Callback ,Json 공부  (0) 2022.01.05
1월1일~1월2일 C# 공부한 부분들  (0) 2021.12.29
12/28 모르는 부분들 C# 구조체Struct, 배열Array  (0) 2021.12.29