4 Şubat 2019 Pazartesi

C# abstract ogretmen ogrenci

using System;
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