2014년 6월 29일 일요일

[구로/가산닷넷교육학원추천합니다.C#,닷넷파생클래스와 클래스메소드교육강좌]이번 강좌에서는 파생클래스와 메소드등의 용법에 대해 알아 보기로 하겠습니다. 오라클자바커뮤니티 닷넷교육학원추천합니다. C#학원, 닷넷학원입니다.

[구로/가산닷넷교육학원추천합니다.C#,닷넷파생클래스와 클래스메소드교육강좌]이번 강좌에서는 파생클래스와 메소드등의 용법에 대해 알아 보기로 하겠습니다. 오라클자바커뮤니티 닷넷교육학원추천합니다. C#학원, 닷넷학원입니다.

* 파생클래스(Derived Class, Sub Class, Child Class)
파생클래스는 기반클래스(Base Class, Super Class, Parent Class)에서 생성자와 소멸자를 제외한 부분을 상속 합니다. 보통 기반 클래스에서 상속 한것에 자신만의 멤버를 추가(플러스 알파...)해서 사용 합니다. 하위클래스(기반클래스)는 상위클래스의 모든 것을 다가지고(private으로 선언 한것은 제외) 거기에 자신만의 변수, 메소드를 추가해 놓았다고 생각하시면 됩니다.

** 파생클래스의 접근성
접근성을 확대 하는것은 불가능 합니다. 아래의 예문을 통해 이해를 하지구요~

private class A { ... }
public class B: A {... } //불가능

-------------------------------------------------------------

파생클래스의 메소드 구현

1. 가상 메소드(virtual method)
가상메소드는 파생클래스에서 Override 될수 있는 메소드라는 것을 알리기 위해 사용 합니다. 가상메소드라고 선언되어 있다고 해서 반드시 오버라이드 될 필요는 없습니다.

클래스를 상속하여 새로운 메소드를 만들때 모든 메소드를 오버라이드 할 수 있는 것은 아니며 단지 기반클래스에서 virtual로 선언된 메소드만 가능 하다는 의미 입니다. 또한 가상메소드는 static으로 선언 할 수 없습니다. 가상메소드는 결국 객체들 사이의 다형성을 구현하기 위해서 사용하는 것이므로 객체와 관련이 있습니다. 그래서 클래스와 관련이 있는 static은 사용하지 못한다... 이런 뜻입니다.

가상메소드는 선언될때 메소드 본문을 포함하고 있어야 하므로 아래의 경우는 오류 입니다.

class Student {
public virtual void GetSchoolName();
}

2. 메소드 오버라이드
메소드 오버라이드는 기반클래스에서 virtual로 선언된 메소드에 대해 파생 클래스에서 새롭게 재정의한 메소드를 말합니다.

override라는 Keyword를 사용 합니다.

class Student {
public virtual void GoToSchool() {
//...
}
}

class UniversityStudent: Student {
public override void GoToSchool() {
//.... 새롭게 정의한 내용
}
}

특징은 다음과 같다.
- 가상메소드를 상속해야만 오버라이드된 메소드를 만들 수 있습니다.
아래와 같은 경우에는 재정의 할 수 없다는 오류가 발생 됩니다.(Student 클래스에서 GoToSchool 메소드에서 virtual이 빠짐)

class Student {
public void GoToSchool() {
//...
}
}

class UniversityStudent: Student {
public override void GoToSchool() {
//.... 새롭게 정의한 내용
}
}

- 오버라이드 메소드는 가상메소드와 동일한 문법을 가지고 있어야 합니다.
(접근지시자, 리턴 타입, 메소드 명, 인자리스트) 즉 virtual과 override 빼고는 다 같아야 합니다.

class Student {
public virtual void GoToSchool() {
//...
}
}

class UniversityStudent: Student {
public override string GoToSchool() {
//.... 새롭게 정의한 내용
}
}

- 오버라이드된 메소드는 다시 오버라이드 될 수 있습니다. 오버라이드 메소드는 묵시적으로 가상메소드라고 생각하면 됩니다.

class Student {
public virtual void GoToSchool() {
//...
}
}

class UniversityStudent: Student {
public override void GoToSchool() {
//.... 새롭게 정의한 내용
}
}

class Freshman: UniversityStudent {
public override void GoToSchool() {
//.... 다시 새롭게 정의한 내용
}
}

- 오버라이드 되는 메소드를 static 으로 선언하면 안된다.(왜? : 오버라이드 메소드도 묵시적으로 가상메소드 이다. 가상메소드는 객체의 다형성을 구하기 위해서 결국 객체와 관련이 있어야 합니다. static은 클래스와 관련이 있습니다.)

class Student {
public virtual void GoToSchool() {
//...
}
}

class UniversityStudent: Student {
static override void GoToSchool() {
//.... 새롭게 정의한 내용
}
}

3. 메소드 숨기기(new)
기존의 것과 일체 관계가 없는 새로운 메소드를 추가 하는 것, 기반클래스의 원래 메소드는 은닉되어 집니다.

class Student {
public void GoToSchool() {
//
}
}

class UniversityStudent: Student {
new public void GoToSchool() {
//.... 새롭게 정의한 내용
}
}

[아래의 예제를 보죠]
class Student {
public virtual void GoToSchool(int i) {
//
}
}

class UniversityStudent: Student {
new public void GoToSchool(string i) { //이경우엔 new를 안해도 됩니다. 왜? 상위클래스의 GoToSchool과 하위클래스의
//.... 새롭게 정의한 내용 메소는 원래 다른 함수로 인식되기 때문에...
}
}

내포된 클래스를 숨기는 경우에도 new 를 사용 합니다.
class Base {
public class Neted {
}
}

class Derived: Base {
new public class Nested {
}
}


오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급
www.oraclejavacommunity.com


평일주간(9:30~18:10) 개강
(7/07)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/07)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/07)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 
(7/07)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
(7/14)[기업100%환급]SQL기초에서 Schema Object까지
(7/14)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(7/14)[기업100%환급]안드로이드개발자과정

평일야간(19:00~21:50) 개강
(7/01)안드로이드개발자과정
(7/01)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/02)Spring3.X, MyBatis, Hibernate실무과정
(7/02)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/02)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/03)웹퍼블리싱 마스터
(7/15)SQL기초에서실무까지
(7/15)MyBatis3.X, Hibernate4.X ORM실무과정
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지

주말(10:00~17:50) 개강
(7/05)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(7/05)SQL초보에서 Schema Object까지
(7/12)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/12)MyBatis3.X, Hibernate4.X ORM실무과정
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
(7/19)Spring3.X, MyBatis, Hibernate실무과정
(7/19)웹퍼블리싱 마스터
(7/19)안드로이드개발자과정

주말저녁(18:30~22:20) 개강
(7/19)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지

댓글 없음:

댓글 쓰기