C# 키워드 abstract 상세 정보

5176 단어 c#
abstract 수식자는 수식된 내용이 실현되지 않았거나 완전하게 실현되지 않았음을 가리키며 클래스, 방법, 속성, 인덱스와 이벤트에 사용할 수 있습니다.일반적으로 abstract 수식이 없는 것은 기본값입니다.1. abstract 수식의 유형을 추상류라고 한다.추상 클래스의 내용은 실현이 부족하거나 완전히 실현되지 않았기 때문에 대상의 실례를 생성할 수 없다. 다른 클래스의 기본 클래스나 대상 변수 성명 유형으로만 사용할 수 있고 추상 클래스의 구성원은 반드시 이 추상 클래스에서 파생된 클래스를 통해 실현해야 한다. 즉, 하위 클래스를 통해 추상 클래스의 추상 방법을 계승하고 덮어씌워야 한다.다음과 같다: 클래스 Square는 Area의 실현을 제공해야 한다. 왜냐하면ShapesClass에서 파생되기 때문이다.
abstract class ShapesClass
{
    abstract public int Area();
}
class Square : ShapesClass
{
    int x, y;

    public override int Area()
    {
        return x * y;
    }
}

추상류의 특성: 1. 추상류는 실례화할 수 없다.2. 추상 클래스는 추상적인 방법과 추상적인 접근기를 포함할 수 있다.3. sealed(C# 참조) 수식자로 추상류를 수정할 수 없다. 이것은 추상류가 계승될 수 없다는 것을 의미한다.4. 추상 클래스에서 파생된 비추상 클래스는 계승된 모든 추상 방법과 추상 접근기의 실제 실현을 포함해야 한다.
2. abstract 수식의 방법은 추상적인 방법이다.
추상적 방법의 특성: 1. 추상적 방법은 은식의 허법이다.2. 추상 클래스에서만 추상적인 방법으로 설명할 수 있다.3. 추상적인 방법 성명은 실제적인 실현을 제공하지 않기 때문에 방법체가 없다.방법은 단지 하나의 분호로 끝났을 뿐이고 서명한 후에 큰 괄호가 없습니다 ({}).예를 들면 다음과 같습니다.
public abstract void MyMethod();  

4. 재작성 방법이 제공하는 것을 실현한다. 이 재작성 방법은 비추상적인 구성원이다.5, 추상적인 방법 설명에서static이나virtual 수식자를 사용하는 것은 잘못된 것입니다.
3. abstract 수식의 속성은 추상적인 속성이다.추상적 속성의 특성: 1. 정적 속성에 abstract 수식자를 사용하는 것은 잘못된 것입니다.2. 파생류에서 오버라이드 수식자를 사용하는 속성 성명을 포함하여 추상적인 계승 속성을 다시 쓸 수 있다.
4. 보충: 추상류는 모든 인터페이스 구성원에게 실현을 제공해야 한다.인터페이스를 실현하는 추상류는 인터페이스 방법을 추상적인 방법에 비출 수 있다.예를 들면 다음과 같습니다.
interface I 
{
    void M();
}
abstract class C: I 
{
    public abstract void M();
}

다음 예에서 DerivedClass 클래스는 추상적인 클래스인 BaseClass에서 파생된 것이다.추상 클래스에는 추상적인 방법인 AbstractMethod와 두 개의 추상 속성 X와 Y가 포함되어 있습니다.
// abstract_keyword.cs
// Abstract Classes
using System;
abstract class BaseClass   // Abstract class
{
    protected int _x = 100;
    protected int _y = 150;
    public abstract void AbstractMethod();   // Abstract method
    public abstract int X    { get; }
    public abstract int Y    { get; }
}

class DerivedClass : BaseClass
{
    public override void AbstractMethod()
    {
        _x++;
        _y++;
    }

    public override int X   // overriding property
    {
        get
        {
            return _x + 10;
        }
    }

    public override int Y   // overriding property
    {
        get
        {
            return _y + 10;
        }
    }

    static void Main()
    {
        DerivedClass o = new DerivedClass();
        o.AbstractMethod();
        Console.WriteLine("x = {0}, y = {1}", o.X, o.Y);
    }
}

출력: x = 111, y = 161
위의 예제에서 다음 문을 사용하여 추상 클래스를 인스턴스화하려는 경우
BaseClass bc = new BaseClass();   // Error

컴파일러가 추상 클래스'BaseClass'의 실례를 만들 수 없다는 오류가 발생합니다.

좋은 웹페이지 즐겨찾기