성장일기

06/03 스마트팩토리 교육 - 오버로드 본문

프로그래밍언어/C#

06/03 스마트팩토리 교육 - 오버로드

김몽몽 2020. 6. 3. 18:25

○오버로드-메서드 오버로드/연산자 오버로드


º메서드 시그니처

주체가 무엇인지를 판단, 메서드를 고유하게 규정할 수 있는 정보

 

º'재정의'라는 단어로 번역될 수 있다

오버라이드- 시그니처가 완전히 동일한 메서드를 재정의할때 사용

오버로드-시그니처 중에서 반환값은 무시하고 이름만 같은 메서드가 '매개변수의 수','개별 매개변수 타입'만

            다르게 재정의 되는 경우


º메서드 오버로드

하나씩 정의
특정 수를 쓰면 int, double, decimal 안에서 자동으로 처리함

Console.WriteLine도 다양한 값을 받을 수 있게 정의된 메서드오버로드의 예


º연산자 오버로드(operator overload)

int operator + (int N1,int N2)

{

return N1+N2;

}

<소스>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200603_008
{
    class Market
		{
			public int iApple;
			public int iOrange;

			public static Market operator + (Market Obj1, Market Obj2)
			{
				Market Obj3 = new Market();
				Console.WriteLine("operator + 호출됨");

				return Obj3;
			}
		}
	class Program
		{
			static void Main(string[] args)
			{
				Market 가게1 = new Market();
				Market 가게2 = new Market();

				가게1.iApple = 10;
				가게1.iOrange = 10;

				가게2.iApple = 100;
				가게2.iOrange = 100;

				Market 가게3 = new Market();

				가게3.iApple = 가게2.iApple + 가게1.iApple;
				가게3.iOrange = 가게2.iOrange + 가게1.iOrange;

				Console.WriteLine("가게3.iApple : " + 가게3.iApple);
				Console.WriteLine("가게3.iOrange : " + 가게3.iOrange);

				가게3 = 가게1 + 가게2;                                                       

				// ->여기서 호출됨, 만약 -를하면 호출안됨
                // (-를 호출하려면 새로운 operate -를 만들면 된다)
				}
			}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200603_008
{
class Market
{
public int iApple;
public int iOrange;

public static Market operator + (Market Obj1, Market Obj2)
{
Market Obj3 = new Market();
Console.WriteLine("operator + 호출됨");

return Obj3;
}
}
class Program
{
static void Main(string[] args)
{
Market 가게1 = new Market();
Market 가게2 = new Market();

가게1.iApple = 10;
가게1.iOrange = 10;

가게2.iApple = 100;
가게2.iOrange = 100;

Market 가게3 = new Market();

가게3.iApple = 가게2.iApple + 가게1.iApple;
가게3.iOrange = 가게2.iOrange + 가게1.iOrange;

Console.WriteLine("가게3.iApple : " + 가게3.iApple);
Console.WriteLine("가게3.iOrange : " + 가게3.iOrange);

가게3 = 가게1 + 가게2;                                                       

->여기서 호출됨, 만약 -를하면 호출안됨(-를 호출하려면 새로운 operate -를 만들면 된다)
}
}
}

-연산을 하고싶으면 새로운 operate를 만들어서 Main에 호출하면 된다(*,/도 마찬가지)

예) 가게3=가게1-가게2

ToString으로 객체정보를 알 수 있다
Obj1이 가게1이이고 Obj2가 가게2인것것을 알 수 있다.


º컴플렉스(복소수)

형태만 만들어 놓은것
public Complex를 작성해준다

int operator +(int A , intB)

뺄셈
복소수의 곱셈
한줄로 짧게 만들수도 있다(덧셈의 예) -메모리상 약간의 이득