[C# 닷넷, 봉인된 클래스, 메소드, sealed class, method 이론.실습예제]
Sealed Class : C#에서 클래스를 상속하는 것은 매우 쉽다. 클래스 : 기반클래스 형식이다.
상속을 고려하지 않게 설계 되어진 클래스는 추후 무분별한 상속으로 인해 어려움이 나타날 수 있다. 이의 해결을 위해 C#에서는
봉인(Sealed)된 클래스를 지원한다. 즉 상속을 하지 못하게 막은 클래스 이다.
기본 클래스의 가상 메서드나 속성을 재정의하는 메서드 또는 속성에 sealed 한정자를 사용할 수도 있다. 이렇게 하면 클래스에서
클래스를 파생시키고, 해당 클래스에서 특정 가상 메서드나 속성을 재정의하지 못하도록 할 수 있다.
아래 예제에서 Z는 Y에서 상속하지만 Z는 X에 선언되고 Y에 봉인된 가상 함수 F를 재정의할 수 없다.
using System;
namespace A
{
class X : object
{
public virtual void F() { Console.WriteLine("X.F"); }
public virtual void F2() { Console.WriteLine("X.F2"); }
public virtual void F3() { Console.WriteLine("X.F3"); }
}
class Y : X
{
sealed public override void F() { Console.WriteLine("Y.F");
}
public override void F2() { Console.WriteLine("X.F3"); }
}
class Z : Y
{
// 아래 주석을 풀면 오류... 봉인된 메소드 이므로 재정의 불가@@
//public override void F() { Console.WriteLine("Z.F");
}
// Overriding F2 is allowed.
public override void F2() { Console.WriteLine("Z.F2"); }
}
public class Test
{
static void Main()
{
X z2 = new Z(); z2.F(); //Y.F
z2.F3(); //X.F3
Y z3 = new Z(); z3.F(); //Y.F
Z z4 = new Z(); z4.F(); //Y.F2
X z5 = new Z(); z5.F2(); //Z.F2
Y z6 = new Z(); z6.F2(); //Z.F
Z z7 = new Z(); z7.F2(); //Z.F2
}
}
}
평일주간[100%환급과정]
(8/29)SQL기초에서 Schema Object까지
(8/29)Spring,MyBatis,Hibernate실무과정
(8/29)자바기초JDBC,Servlet/JSP까지
(8/29)PL/SQL,ORACLE HINT,TUNING
(9/15)C#4.0,WinForm,ADO.NET
(9/15)안드로이드개발자과정
(9/18)오라클자바채용확정교육
평일야간[개인80%환급]
(8/28)SQL기초에서실무까지
(8/28)자바JSP,jQuery,Spring,MyBatis
(8/29)Spring, MyBatis, Hibernate
(9/02)HTML5,CSS3,Ajax,jQuery마스터
(9/12)C#,Network,ADO.NET,ASP.NET
(9/16)안드로이드개발자과정
주말주간[개인80%환급]
(8/30)Spring, MyBatis, Hibernate
(8/30)SQL기초에서실무까지
(8/30)자바,네트워크,웹&스프링
(8/30)안드로이드개발자과정
(9/13)C#,ASP.NET마스터(9/13)웹퍼블리싱 마스터
(8/29)SQL기초에서 Schema Object까지
(8/29)Spring,MyBatis,Hibernate실무과정
(8/29)자바기초JDBC,Servlet/JSP까지
(8/29)PL/SQL,ORACLE HINT,TUNING
(9/15)C#4.0,WinForm,ADO.NET
(9/15)안드로이드개발자과정
(9/18)오라클자바채용확정교육
평일야간[개인80%환급]
(8/28)SQL기초에서실무까지
(8/28)자바JSP,jQuery,Spring,MyBatis
(8/29)Spring, MyBatis, Hibernate
(9/02)HTML5,CSS3,Ajax,jQuery마스터
(9/12)C#,Network,ADO.NET,ASP.NET
(9/16)안드로이드개발자과정
주말주간[개인80%환급]
(8/30)Spring, MyBatis, Hibernate
(8/30)SQL기초에서실무까지
(8/30)자바,네트워크,웹&스프링
(8/30)안드로이드개발자과정
(9/13)C#,ASP.NET마스터(9/13)웹퍼블리싱 마스터
댓글 없음:
댓글 쓰기