posted by 준치 2013. 10. 11. 16:36

함수형 멤버 

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(명시적) 하나 선택

암시적 변환 - 캐스팅을 하지 않더라도 컴파일러가 알아서 변환하는 것을 허가하는 연산

                 - 변환에 의한 손실이 전혀 없을 사용

명시적 변환 - 손실이 발생할 수도 있으므로 캐스팅에 의해서만 변환

                 - 컴파일러가 임의로 변환을 하지 못하는 변환