using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
public abstract class Kisi
{
public string AdSoyad;
public abstract string Meslek
{
get;
}
public virtual void Yaz()
{
Console.WriteLine("adı soyad:"+AdSoyad);
Console.WriteLine("mesleği:"+Meslek);
}
}
public class Ogrenci :Kisi
{
public int Sınıf;
public override string Meslek
{
//deger alır
get
{
return "Öğrenci";
}
}
public override void Yaz()
{
Console.WriteLine("Adı Soyad:"+AdSoyad);
Console.WriteLine("Mesleği:"+Meslek);
Console.WriteLine("Sınıfı:"+Sınıf);
}
}
public class Ogretmen :Kisi
{
public string Brans;
public override string Meslek
{
get
{
return "Öğretmen";
}
}
public override void Yaz()
{
Console.WriteLine("Adı Soyad:"+AdSoyad);
Console.WriteLine("Mesleği:"+Meslek);
Console.WriteLine("Branş:"+Brans);
}
}
//kalıtım yapılmayacak sınıflara sealed deriz
//sealed class Mudur
//{
//}
//class Patron :Mudur
//{
//}
class Program
{
static void Main(string[] args)
{
//Temel sınıfından abstract olarak tanımlanmış bundan instance alamaz aşağıdaki tanımlama olmaz
//Kisi kisi1=new Kisi();
Ogrenci ogrenci1 = new Ogrenci();
ogrenci1.AdSoyad = "Eren Turkyılmaz";
ogrenci1.Sınıf = 1;
ogrenci1.Yaz();
Ogretmen ogretmen1 = new Ogretmen();
ogretmen1.AdSoyad = "osman hoca";
ogretmen1.Brans = "Yazılım Mühendisliği";
ogretmen1.Yaz();
Console.ReadLine();
//Abstrant sınıflarla ilgili
//----------
//Abstract classlardan nesne tanımlamaz,instance alınamaz
//abstract sınıflar,abstract alanlar içerebilirler
//abstract alan tanımlanan bir class mutlaka abstract class olarak tanımlanmalıdır
//Abstract classlar sealed anahtar sözcüğü ile ifade edilemezler,çünkü
//sealed ilgili sınıftan türetme yapılmasını engeller
//Abstract bir sınıftan türeyen sınıflar temel içindeki bütün abstract metotları veya alanları override ederek değiştirmek zorundadır
//yani metodun gerçek iş yapacak gövdeler bu türeyen sınıflar içinde tanımlanır
//Bütün abstract claaslar aslında virtuallardır
//static metotlar abstract olarak tanımlanmazlar...
//Static metotlar abstract olarak tanımlanmazlar
//ödev bu uygulama formda yapılsın
}
}
}
Hiç yorum yok:
Yorum Gönder