블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
반응형

Category

Recent Post

Recent Comment

Archive

2009. 8. 15. 01:16 .Net Project/.Net 3.5 Sp1
반응형
봉인클래스란 ?
지정자 sealed를 메서드 앞에 붙이면 이 메서는 봉인되며, 더 이상 재정의가 불가능
하다
. 봉인되었다는 뜻은 기능이 확정되어 이후의 파생클래스에서는 호출만 할수 있고 재정의는 할 수 없다는 뜻이 된다.
sealed 지정자는 중간 단계의 클래스에서만 사용되며 최상위의 부모클래스에는 키워를 사용할 필요가 없다. 가상으로 선언된 메서드만 재정의 대상이며 가상이 아닌 메서드는 암시적으로 봉인된 것이다.
중간 단계의 클래스가 자신이 마지막으로 재정의하고 싶을 때만 sealed지정자를 사용한다. 그래서 sealed지정자는 항상 override지정자와 함께 사용하고 있다



Program.cs


using System;

public class 봉인클래스
{
    public static void Main(string[] args)
    {
        Sonata s = new Sonata();

    }
}

Car.cs


using System;

public interface IIso { }
public interface IKs { }
public abstract class Car { }
public class HD : Car, IIso, IKs
{

}

public sealed class Sonata : HD    
// 더이상 상속받지 못하도록 함
{

}

public class Other : Sonata            // Sonata Error
{

}

반응형

'.Net Project > .Net 3.5 Sp1' 카테고리의 다른 글

79장 인터페이스(Interface)  (0) 2009.08.15
78장 추상클래스(Abstract)  (0) 2009.08.15
76장 메서드 오버라이딩(Tostring)  (0) 2009.08.15
75장 클래스의 부모접근  (0) 2009.08.15
74장 상속관련  (0) 2009.08.15
posted by Magic_kit
2009. 8. 15. 01:15 .Net Project/.Net 3.5 Sp1
반응형

 

인터페이스란 ?
메서드의 목록만을 가지는 특별한 타입이다.
기본 형식은 클래스 선언문과 유사돼 키워드 interface로 선언하며, 클래스와 쉽게 구분하기 위해
대문자 I로 시작하여 사용하는 것이 정해진 규칙이다.
이름 뒤에 : 과 깁반 인터페이스를 밝힘으로써 다른 인터페이스로 부터 상속을 받을 수도 있다.

인터페이스의 상속이란 ?
상속에는 구현상속과 인터페이스 상속이 존재 하고 있다.
구현상속 : 부모의 코드를 자식이 그대로 물려 받는 것이며, 클래스 간의 상속이 그 예이다.
인터페이스 상속 : 코드를 물려받지 않고 구현해야 할 메서드의 목록만 상속 받는 것을 의미

일반적으로 코드를 상속하는 구현 상속을 칭하는 경우가 많으며, 빈도도 구현 상속이 훨신더 높다
클래스 계층의 상단부에는 설계상의 목적으로 인터네이스 상속을 하는 것이 좋고 하단부에서는 실제 구현을 재사용하기 위해 구현상속을 사용한다,

논리적으로 튼튼한, 그러면서도 실용적인 클래스 계층을 구축하기 위해서는 두 종류 상속이 필요하며, C#은 인터페이이스 상속을 지원하기 위해 인터페이스라는 특수한 타입을 제공하고 있다.

Program.cs 


using System;

public class 인터페이스
{
    public static void Main(string[] args)
    {
        Sonata sonata = new Sonata();
        sonata.Run();
        sonata.Left();
        sonata.Right();
        sonata.Back();
    }
}

Car.cs


using System;

public interface IIso
{
    void Run();     // 이름만 정의
}

public interface IKs { void Back(); }

public abstract class HD : IIso, IKs
{
    public void Run() { Console.WriteLine("Run~~"); }
    // void IKs.Back() { Console.WriteLine("Back~~"); }
    public void Back() { Console.WriteLine("Back~~"); }
   
public abstract void Left();    // 추상메서드
}

public class Sonata : HD
{
    public override void Left()
    {
        Console.WriteLine("Left Turn~~");
    }
    public void Right() { Console.WriteLine("Right Turn~~"); }
}

반응형
posted by Magic_kit
2009. 8. 15. 01:14 .Net Project/.Net 3.5 Sp1
반응형
 추상 클래스란 ?

메서드는 객체의 동작을 정하며, 그러기 위해서는 동작을 구현하는 코드를 가져야 한다.
코드가 없으며, 동작을 표현할 수 없으므로 메서드는 본체를 가지고 본체에는 구현 코드가 작성되는 것이 당연하다. 그러나 코드를 가지지 않는 메서드도 있는 이런 메서드를 추상 메서드라고 한다.
추상 메서드는 abstract지정자를 붙이는데 인수 목록과 리턴 타입은 가지지만, 
세미콜론 하나로 끝이 난다.

Public abstract int MoMo(int a, doubleb)  <----이와같은 방식으로 사용

추상메서드는 본체가 없기 때문에 구체적인 동작의 정하지 않으며, 호출 할 수 없다.
추상클래스는 너무 일반적이어서 인스턴스를 생성할 수 없는 클래스이며, 선언문에는 
abstract지정자는 붙이면 이 클래스는 추상 클래스가 된다.
추상클래는 보통 추상메서는 포함하고 있다.  

Program.cs 


using System;

public class 추상클래스
{
    public static void Main()
    {
        Sonata sonata = new Sonata();
        sonata.Run();       // 표준
        sonata.Left();       // 공통
        sonata.Right();     // 자체
    }
}

Car.cs


using System;

// 추상클래스
public abstract class KS
{
    // 추상메서드
    public abstract void Run();     // 강제성이있음 이름만 정의
}

// 현대 공통
public class HD : KS
{
    public override void Run()           // abstract >> override 로 지정해주어야함
    {
        Console.WriteLine("Run~~");
    }
    public virtual void Left()                        // 가상함수
    {
        Console.WriteLine("Left Turn~~");
    }
}

// Sonata만의 기능
public class Sonata : HD
{
    public void Right()
    {
        Console.WriteLine("Right Turn~~");
    }
}

반응형
posted by Magic_kit
2009. 8. 15. 01:14 .Net Project/.Net 3.5 Sp1
반응형
Program.cs 


using System;

public class ToStringMethodOverride
{
    public static void Main(string[] args)
    {
        // 문자열 변수
        System.Collections.Stack s = new System.Collections.Stack();
        Console.WriteLine("{0}", s.ToString());

        // 정수형 변수
        Int32 intnum = 1234;
        Console.WriteLine("{0}", intnum.ToString());

        // 내가 만든 class에 ToString() 요청시 특정 필드의 값을 바로 출력
        Car car = new Car();
        Console.WriteLine(car.Name);
        Console.WriteLine(car);
       
        Car sonata = new Car("Sonata");
        Console.WriteLine(sonata.Name);
        // ToString Metho Override
       .ToString());
        Console.WriteLine("{0}", sonata);
    }
}

Car.cs

using System;

public class Car
{
    // field
    private string name;
   
    // property
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
       
    // constructor
    public Car()
    {
        this.name = "Car";
    }
    public Car(string name)
    {
        this.name = name;
    }
    // ToString Method Override       return name;
    }
}


반응형

'.Net Project > .Net 3.5 Sp1' 카테고리의 다른 글

79장 인터페이스(Interface)  (0) 2009.08.15
78장 추상클래스(Abstract)  (0) 2009.08.15
75장 클래스의 부모접근  (0) 2009.08.15
74장 상속관련  (0) 2009.08.15
73장 네임스페이스(NameSpace)  (0) 2009.08.15
posted by Magic_kit