Aracılığıyla paylaş


Nasıl yapılır: Soyut Özellikleri Tanımlama (C# Programlama Kılavuzu)

Aşağıdaki örnek, nasıl tanımlandığını gösterir soyut özellikleri.Soyut özellik bildirimi uygulaması özellik erişimcisi sağlamaz--sınıf özelliklerini destekler, ancak türetilmiş sınıflara erişeni uygulama bırakır bildirir.Aşağıdaki örnek, temel sınıfından miras soyut özelliklerini uygulamak gösterilmiştir.

Bu örnek üç dosya, her biri ayrı ayrı olarak derlenen oluşur ve kendi sonuç derlemesinin sonraki derleme tarafından başvurulmaktadır:

  • abstractshape.cs: Shape içeren bir soyut sınıf Area özelliği.

  • Shapes.cs: alt sınıflarından birinin Shape sınıfı.

  • shapetest.cs: bazı alanlarını görüntülemek için bir sınama programı Shape-nesneleri türetilmiş.

Örnek derlemek için aşağıdaki komutu kullanın:

csc abstractshape.cs shapes.cs shapetest.cs

Bu yürütülebilir dosya shapetest.exe oluşturacaktır.

Örnek

Bu dosyayı bildirir Shape içeren sınıf Area türünde özellik double.

// compile with: csc /target:library abstractshape.cs 
public abstract class Shape
{
    private string name;

    public Shape(string s)
    {
        // calling the set accessor of the Id property.
        Id = s;
    }

    public string Id
    {
        get
        {
            return name;
        }

        set
        {
            name = value;
        }
    }

    // Area is a read-only property - only a get accessor is needed: 
    public abstract double Area
    {
        get;
    }

    public override string ToString()
    {
        return Id + " Area = " + string.Format("{0:F2}", Area);
    }
}
  • Özellik bildiriminde değiştiriciler özellikte yerleştirilir.Örne?in:

    public abstract double Area
    
  • Soyut bir özellik bildirirken (gibi Area Bu örnekte), basitçe hangi özellik erişimcisi kullanılabilir gösterir ancak bunları uygulamaz.Bu örnekte, yalnızca bir Al erişimci özelliği salt okunur olacak şekilde kullanılabilir.

Aşağıdaki kod üç alt sınıflarından birinin gösterir Shape ve bunların nasıl geçersiz kılma Area kendi uygulama sağlamak için özellik.

// compile with: csc /target:library /reference:abstractshape.dll shapes.cs 
public class Square : Shape
{
    private int side;

    public Square(int side, string id)
        : base(id)
    {
        this.side = side;
    }

    public override double Area
    {
        get
        {
            // Given the side, return the area of a square: 
            return side * side;
        }
    }
}

public class Circle : Shape
{
    private int radius;

    public Circle(int radius, string id)
        : base(id)
    {
        this.radius = radius;
    }

    public override double Area
    {
        get
        {
            // Given the radius, return the area of a circle: 
            return radius * radius * System.Math.PI;
        }
    }
}

public class Rectangle : Shape
{
    private int width;
    private int height;

    public Rectangle(int width, int height, string id)
        : base(id)
    {
        this.width = width;
        this.height = height;
    }

    public override double Area
    {
        get
        {
            // Given the width and height, return the area of a rectangle: 
            return width * height;
        }
    }
}

Aşağıdaki kod, bir takım oluşturur bir sınama programı gösterir Shape-türetilen nesneler ve onların alanlarını yazdırır.

// compile with: csc /reference:abstractshape.dll;shapes.dll shapetest.cs 
class TestClass
{
    static void Main()
    {
        Shape[] shapes =
        {
            new Square(5, "Square #1"),
            new Circle(3, "Circle #1"),
            new Rectangle( 4, 5, "Rectangle #1")
        };

        System.Console.WriteLine("Shapes Collection");
        foreach (Shape s in shapes)
        {
            System.Console.WriteLine(s);
        }
    }
}
/* Output:
    Shapes Collection
    Square #1 Area = 25.00
    Circle #1 Area = 28.27
    Rectangle #1 Area = 20.00
*/

Ayrıca bkz.

Görevler

Nasıl yapılır: Komut Satırını Kullanarak Derlemeler Oluşturma ve Kullanma (C# ve Visual Basic)

Başvuru

Sınıflar ve Yapılar (C# Programlama Kılavuzu)

Soyut ve Korumalı Sınıflar ve Sınıf Üyeleri (C# Programlama Kılavuzu)

Özellikler (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu