【c#】裡式替換原則
阿新 • • 發佈:2018-10-31
繼承
漢語解釋:繼承是指一個物件直接使用另一物件的屬性和方法。也指按照法律或遵照遺囑接受死者的財產、職務、頭銜、地位等。(來自百度百科)
面向物件解釋:繼承就是子類繼承父類的特徵和行為,使得子類物件具有父類的例項域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。
裡式替換原則
這個原則簡直就是父類與子類糾纏不清,父類轉子類,子類轉父類。
為了能夠實現,而程式的功能不受影響。在繼承的時候,父類中一定要存在非私有的成員,子類一定能夠得到父類的這些非私有成員。
1、父類轉子類
Person p = new Person();
Student stu = (Student)p;//父類物件不能直接轉化為子類
Person p = new Teacher();
Teacher t = (Teacher)p;//如果new的時候是子類,那麼再轉換這個子類的時候可以
t.SayHi();
Person p = new Teacher();//如果new的是子類,轉換的時候轉的另一個子類,報異常
Student stu = (Student)p;
stu.SayHello();
2、子類轉父類
Student stu = new Student();
Person p = stu;
stu.show();
父類和子類的程式碼如下:
public class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value ; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public void show()
{
Console.WriteLine("我是人");
}
}
public class Teacher : Person
{
int _salary;
public int Salary
{
get { return _salary; }
set { _salary = value; }
}
public void SayHi()
{
Console.WriteLine("我是一名老師");
}
}
public class Student : Person
{
string _id;
public string Id
{
get { return _id; }
set { _id = value; }
}
public void SayHello()
{
Console.WriteLine("我是一名學生");
}
}