함수형 멤버
1.1 메서드 정의
함수는 클래스에 소속
전역 함수는 존재할수 없으며 모든 함수는 클래스의 멤버로만 존재
형식
지정자 리턴타입 이름(인수 목록){
//본체
}
함수의 이름은 통상 구체적인 동작을 상징하는 짧은 동사와 목적어의 조합
ref , out 키워드로 참조나 출력용 인수로 전달할 수동 있다.
리턴 타입은 실행을 마치고 호출 원으로 결과를 보고할 때 넘기는 값의 타입
C언어 - 함수 , 파스칼 - 프로시저 , 베이직 - 서브루틴
1.2 메서드 오버로딩
메서드는 이름으로 구분되는데 이름이 같더라도 인수목록이 다르면 여러 개의 메서드를 정의 할 수 있다.
이 기능을 오버로딩(overloading) 이라 한다.
인수의 개수나 타입에 대한 정보를 시그니처(Signature) 라 한다.
2.1 프로퍼티
클래스의 이런 기능을 정보 은폐라고 하며 과거부터 많이 사용해왔던 방법
필드 하나당 두 개의 메서드를 일일이 만든다는 것은 비효율적 이다.
그래서 get/set 을 사용 한다.
형식
지정자 타입 이름
{
Get{ return 값;}
Set{ 값 변경;}
}
{}안에 get,set 접근자(accessor) 블록을 추가로 가진다는 점이 다르다.
Value 라는 이름의 암시적 인수로 set 접근자에게 전달
Static 을 붙여 모든 객체가 공유하는 정적 프로퍼티로 선언 가능
2.2 프로퍼티의 장점
속도 , 코드 줄임 등
2.3 인덱서
객체를 마치 배열인 것처럼 사용할 수 있도록 하는 특별한 메서드
형식
지정자 타입 this[인수]
{
Get{ return 값;}
Set{ 값 변경;}
}
이름이 this 로 고정되어있다.
3.1 연산자 오버로딩
3.2 연산자 오버로딩의 예
설명이 애매 하므로 소스
TimePlus A = new TimePlus(1, 1, 1);
TimePlus B = new TimePlus(2, 2, 2);
TimePlus C;
C = A + B;
C.OutTime();
public static TimePlus operator +(TimePlus A, TimePlus B)
{
//루틴
}
객체와 객체를 + 하는 연산이 일어났는데 이때 오버로딩 이 되어
public static TimePlus operator +(TimePlus A, TimePlus B) 가 실행된다.
+ - ++ 모두 구현 가능하며 인수를 다르게 하여 오버로딩 할 수 있다.
3.3 캐스트 연산자
연산자 오버로딩이란 사용자가 정의한 클래스의 연산 방법을 사용자가 직접 지정함으로써 객체를
대상으로 연산 할 수 있는 기능.
형식
public static implicit(explicit) operator 변환대상(인수)
단항 연산자 이므로 인수도 반드시 하나여야 한다.
변환 방식을 지정하는 키워드가 오는데 implicit(암시적) , explicit(명시적) 중 하나 선택
암시적 변환 - 캐스팅을 하지 않더라도 컴파일러가 알아서 변환하는 것을 허가하는 연산
- 변환에 의한 값 손실이 전혀 없을 때 사용
명시적 변환 - 값 손실이 발생할 수도 있으므로 캐스팅에 의해서만 변환
- 컴파일러가 임의로 변환을 하지 못하는 변환