0314 클래스와 메서드

2021. 3. 15. 00:04C#/과제

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