0314 클래스와 메서드
2021. 3. 15. 00:04ㆍC#/과제
ref
static void Main(string[] args)
{
int x = 10; //초기화 꼭 해야함
PassByValue(x);
Console.WriteLine(x); // x = 10 ← 메서드에서 변경된 부분이 호출 함수에서 반영되지 않음
PassByReference(ref x);
Console.WriteLine(x); // x = 13
}
static void PassByValue(int a)
{
a += 3;
}
static void PassByReference(ref int a)
{
a += 3;
}
1. 오버로딩
객체 지향 언어에선 메소드의 전달인자의 종류와 개수를 기반으로 호출하기에 문제 발생x
겉모습은 같은 이름의 메소드라도 전달인자가 다르면 다른 메소드로 취급한다.
public class Zerg
{
public Zerg()
{
}
public void Overload(int zergling)
{
Console.WriteLine("저글링 {0} 마리");
}
public void Overload(int zergling, int hydra)
{
Console.WriteLine("저글링 {0}마리+히드라 {0} 마리");
}
public void Overload(int zergling, int hydra, int lucker)
{
Console.WriteLine("저글링 {0} 마리+히드라 {0} 마리+럴커 {0} 마리");
}
public void Overload(char zergling)
{
Console.WriteLine("Zergling {0} 등급", zergling);
}
}
class Program
{
static void Main(string[] args)
{
Zerg zerg = new Zerg();
zerg.Overload(10);
zerg.Overload(10, 20);
zerg.Overload(10,20,30);
zerg.Overload('A');
}
}
2. 오버라이딩
기존의 것에 새로운 것을 덮ㅇ 버린다는 개념
부모와 자식 관계인 상속 관계만 가능 : 부모에게 물려받은 여러 기능을 자식이 원하는 대로 재정의
'C# > 과제' 카테고리의 다른 글
0317 interface+abstract+stack+queue (0) | 2021.03.17 |
---|---|
0316 컬랙션 과제 (0) | 2021.03.17 |
0311 Class+맴버 변수+메서드 호출 연습 (0) | 2021.03.11 |
0310 메서드 선언/정의 연습 (0) | 2021.03.10 |
0309 반복문 연습 + 랜덤번호 생성 (0) | 2021.03.09 |