2008年4月17日 星期四

物件導向觀念

在這篇文章中,我將要介紹在C#當中物件繼承的觀念,我們以下列的範例來解釋
存取修飾詞的限制這篇文章中我們曾說明修飾詞的特性,因此本篇不再多加以說明。

下面這個範例總共可以分成四個類別:MainClassVehicleCarMotorcycle
而主要的內容即為後三個類別,CarMotorcycle皆繼承自Vehicle
並且我們可以看到Vehicle是一個抽象類別,其有兩個成員函數和一個建構子,
此兩個成員函數echo()跟getData()是本篇所要講述的主題,
我們可以看到echo()在Vehicle中它是一個抽象函數,所有繼承他的類別皆需要實作
也就是說實作的內容可以完全不一樣以達到自己類別本身的特性,
而getData()則是因為他在Vehicle中已經實作了,所以它的子類別或是衍生類別就可以直接使用它
不需要再重寫一遍。

public class MainClass{
public static void main(){
Vehicle[] v=new Vehicle[2];
v[0] = new Car("Car");
v[1] = new Motorcycle("YAMAHA");
v[0].echo();
v[1].echo();
v[0].getData();
v[1].getData();
}
}

abstract class Vehicle
{
///
/// 宣告echo為抽象函式時,不能撰寫任何程式碼,只能下定義
/// 雖然宣告了Vehical為抽象類別,但是其內容的任何東西並非皆具有抽象屬性
///
abstract public void echo();
protected string str;

public Vehicle(string str)
{
this.str = str;
}

public void getData()
{
Console.WriteLine("{0}",str);
}
}

class Car : Vehicle
{
public Car(String str):base(str)
{
}
public override void echo()
{
Console.WriteLine("This is a {0}",str);
}
}

class Motorcycle : Vehicle
{
public Motorcycle(String str):base(str)
{
}

public override void echo()
{
Console.WriteLine("This is a {0}",str);
}
}

沒有留言:

張貼留言