Virtual ve Override Metodları C# Ders 63
Virtual ve Override Metodları : Kalıtım yoluyla elde edilen sınıflarda temel sınıfta bulunan bir metodu aynı isimle oluşturmak için kullanılır.Kalıtım yoluyla elde edilmiş sınıfta virtual metod çağrılırken override kullanılır.
Örnek: İlk olarak textbox’a girilen sayıyı bize gönderen class içinde bir metot hazırlayalım.

[code lang=”csharp”]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace virtual_override
{//Daha fazla bilgi için : www.gorselprogramlama.com
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void goster_Click(object sender, EventArgs e)
{
Kenar k = new Kenar();
label1.Text=k.Al(int.Parse(textBox1.Text)).ToString();
}
}
}
class Kenar
{//Daha fazla bilgi için : www.gorselprogramlama.com
private int x;
public int Al(int a)
{
this.x = a;
return x;
}
}
[/code]

Örnek: İkinci bir class oluşturup aynı isimde bir metot oluşturalım.

[code lang=”csharp”]
sing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace base_kullanimi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{//Daha fazla bilgi için : www.gorselprogramlama.com
KenarIkiiKati k = new KenarIkiiKati();
label1.Text=k.Al(int.Parse(textBox1.Text)).ToString();
}
}
}
class Kenar
{
private int x;
public int Al(int a)
{
this.x = a;
return x;
}
}
class KenarIkiiKati:Kenar
{//Daha fazla bilgi için : www.gorselprogramlama.com
private int x;
public int Al(int a)
{
this.x = a*2;
return x;
}
}
[/code]
Çalıştırdığımızda aşağıdaki gibi uyarı mesajı alırız.Anlamı miras alınan sınıfta aynı isimde bir metot var diyor.İşte bu gibi durumlarda miras aldığımız sınıfata aynı isimden metot kullanmak istiyorsak virtual’ı kullanmalıyız.Aşağıdaki örnekte virtual’ı kullanarak hazırlayalım.Tabiki virtual’ı ekledikten sonra mirascı sınıfta metodu çağırmak için override’ı kullanacağız.

Örnek:

[code lang=”csharp”]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace base_kullanimi
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
KenarIkiiKati k = new KenarIkiiKati();
label1.Text=k.Al(int.Parse(textBox1.Text)).ToString();
}
}
}
class Kenar
{
private int x;
public virtual int Al(int a)
{
this.x = a;
return x;
}
}
class KenarIkiiKati:Kenar
{
private int x;
public override int Al(int a)
{
this.x = a*2;
return x;
}
}
[/code]
