2014년 8월 7일 목요일

[강좌#18]메소드 오버로딩, 오버라이딩[닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육]

이번 강좌에서는 지난 강좌에 이어 메소드에 대해 조금 더 알아보도록 하겠습니다. 메소드 오버로딩과 오버라이딩에 대해 공부를 하도록 하죠.... 



아래의 예는 메소드 오버로드 예젭니다. 

class overloadingexample { 

static int Add( int a, int b) { 
return a+b; 

static int Add( int a , int b, int c ) { 
return a+b+c; 

static void Main() { 

int r1 = Add(1,2); //같은 Add 메소드인데 매개변수의 갯수를 달리했죠?... 이게 메소드 오버로딩 입니다. 
int r2 = Add(1,2,3); 



Add 메소드는 매개변수가 다른 2가지 형태가 있는데 메소드를 사용 할 때 어느것을 사용할지 명시적으로 지정하지 않아도 된다는 이야기 입니다. 매개변수 뿐 아니라 함수 Signature 의 모든 요소들이 Overloading 의 대상 입니다(Add(ref int a, int b) ) 

메소드 Signature는 클래스안에서 유일하며 메소드 이름, 파라미터의 갯수등입니다. 

주의 : 파라미터 이름, 메소드의 리턴 타입은 메소드 Signature가 아닙니다. 



결국 메소드 오버로드는 하나의 클래스 내부 등에서 주로 메소드의 파리미터 갯수, 타입을 변화 시키면서 객체 지향의 한 특징인 다형성(Polymorphism)을 구현하기 위한 하나의 방법 입니다. 



이번에는 메소드 오버라이딩(Method Overriding)에 대해 알아 보기로 합니다. 

메소드 오버라이딩은 상.하위 클래스 관계에서 나타나는 것으로 상위 클래스의 메소드를 가상 메소드(virtual method)로 정의하고 하위 클래스에서 override 라는 키워드를 이용하여 재정의 할 수 있습니다. 객체 지향에서 보았을때 상위 클래스의 메소드를 하위 클래스의 입맛에 맞게 바꾸는 개념 으로 다형성을 구현하는 경우 입니다, 즉 하위 클래스의 입맛대로 다양하게 메소드를 조작함으로서 객체 지향의 다형성을 구현 하는 겁니다. 아래의 예제를 보시면 보통 개가 "멍멍" 짖는 다고 개 클래스에서 정의 했지만 푸들이라는 개는 자신이 다르게 짖는 다는것을 짖다() 라는 메소드를 다시 정의(재정의) 함으로서 나타내었습니다. 

아래의 예는 메소드 오버로딩과 오버라이딩의 예 입니다. 

[예제] 

using System; 

class 개 

public virtual void 짖다() 

Console.WriteLine("멍멍~~~"); 



class 푸들 : 개 

public override void 짖다()//상위 클래스인 개의 짖다를 다시 정의(재정의, Overriding) 함, 묵시적인 재정의 

Console.WriteLine("푸들푸들~~~"); 

public void 짖다(string s)//오버로드 

Console.WriteLine(s); 



class Program 

public static void Main() 

푸들 dog = new 푸들(); 

dog.짖다(); //푸들의짖다() 불림 
dog.짖다("왈왈"); //푸들의 짖다(string s) 불림 

개 dog1 = new 개(); 

dog1.짖다(); //푸들의짖다() 불림 
//dog1.짖다("왈왈"); //오류, 개라는 클래스는 짖다(배개변수) 형태는 가지고 있지않다. 

개 dog2 = new 푸들(); 

dog2.짖다(); //개의짖다() 불릴려 다가 하위 클래스에서 재정의 된 짖다()가 호출됨... 메소드 재정의 
//dog2.짖다("왈왈"); //오류, 개라는 클래스는 짖다(배개변수) 형태는 가지고 있지않다. 






[결과] 

푸들푸들~~~ 
왈왈 
멍멍~~~ 
푸들푸들~~~ 



평일주간[100%환급과정]
(8/11)SQL기초에서 Schema Object까지
(8/18)Spring,MyBatis,Hibernate실무과정
(8/18)자바기초JDBC,Servlet/JSP까지
(8/18)PL/SQL,ORACLE HINT,TUNING
(8/25)C#4.0,WinForm,ADO.NET
(8/25)안드로이드개발자과정
(8/25)오라클자바채용확정교육
평일야간[개인80%환급]
(8/11)SQL기초에서실무까지
(8/11)안드로이드개발자과정
(8/12)Spring, MyBatis, Hibernate
(8/13)C#,Network,ADO.NET,ASP.NET
(8/13)HTML5,CSS3,Ajax,jQuery마스터
(8/28)자바JSP,jQuery,Spring,MyBatis
주말주간[개인80%환급]
(8/09)SQL기초에서실무까지
(8/09)안드로이드개발자과정
(8/09)자바JSP,Ajax,jQuery,Spring,MyBatis
(8/16)C#,ASP.NET마스터(8/16)웹퍼블리싱 마스터
(8/16)Spring, MyBatis, Hibernate
(8/23)JAVA,Network&WEB&Framework
주말야간[개인80%환급]
(8/09)SQL기초에서실무까지
(8/23)JAVA,Network&WEB&Framework

댓글 없음:

댓글 쓰기