Kaydol:
Kayıt Yorumları
(
Atom
)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Soyut_Sinif
{
class Program
{
static void Main(string[] args)
{
//SoyutSinif soyutsinif = new SoyutSinif();
// Böyle bir tanımlama yapılamaz Abstract sınıfın bir örneği(instance) alınamaz
// Sadece kalıtım için kullanılabilir
TuretilenSinif tureyensinif = new TuretilenSinif();
// yazdir metodu SoyutSinif ına ait bir metot
tureyensinif.yazdir("Merhaba\n");
// yaz() metodu SoyutSiniftan miras alınmış ve TuretileSinif içinde
// değiştirilerek (override) artık TüretilenSinif ın bir metodudur.
tureyensinif.yaz();
tureyensinif.Ad = "Ahmet";
tureyensinif.Soyad = "Kara";
tureyensinif.Telefon = "1 111 111 11 11 ";
Console.WriteLine(tureyensinif.Ad + " " + tureyensinif.Soyad +
": "+tureyensinif.Telefon);
Console.ReadKey();
/*
*
* Program Çıktısı:
*
* Merhaba
Türetilen sinifta değiştirildim
Ahmet Kara: 1 111 111 11 11
*
*/
}
}
// Abstract sınıf(soyut sınıf) oluşturma
// Abstract sınıfların nesnesi üretilemez
// Abstract sınıflardan türemiş olan sınıfların nesneleri üretilebilir.
// Bu duruma çok biçimlik (polymorphism) denir.
// Abstract sınıf kalıtım amacıyla kullanılır.
abstract class SoyutSinif
{
//Abstrac sinif içinde normal bir metot
public void yazdir(string yazi)
{
Console.WriteLine(yazi);
}
// Abstrac sinif içinde abstract bir metod oluşturma
public abstract void yaz();
//abstact bir metot sonradan yani miras alındığı sınıf içinde değiştirilmesine
// olanak verir (override).
// Abstract metot static olamaz.
// Abstract metot virtual olamaz.
// Abstract metot private olarak tanımlanamaz.
// Abstract sınıf içinde metodun tanımlaması veya açıklaması yapılmaz.
// Ad isminde soyut bir property oluşturma
// Soyut metod için geçerli olan özelikler soyut property içinde geçerlidir
public abstract string Ad
{
get;
set;
}
// Soyad isminde soyut bir property oluşturma
// Soyut metod için geçerli olan özelikler soyut property içinde geçerlidir
public abstract string Soyad
{
get;
set;
}
public abstract string Telefon
{
get;
set;
}
}
class TuretilenSinif:SoyutSinif
{
// Abstract metodu (override) değiştir
public override void yaz()
{
Console.WriteLine("Türetilen sinifta değiştirildim\n");
}
private string ad;
private string soyad;
private string telefon;
// Abstract
public override string Ad
{
get
{
return ad;
}
set
{
ad = value;
}
}
public override string Soyad
{
get
{
return soyad;
}
set
{
soyad = value;
}
}
public override string Telefon
{
get
{
return telefon;
}
set
{
telefon = value;
}
}
}
}
}
Hiç yorum yok :
Yorum Gönder