1. 程式人生 > >【c#】裡式替換原則

【c#】裡式替換原則

繼承

漢語解釋:繼承是指一個物件直接使用另一物件的屬性和方法。也指按照法律或遵照遺囑接受死者的財產、職務、頭銜、地位等。(來自百度百科)
面向物件解釋:繼承就是子類繼承父類的特徵和行為,使得子類物件具有父類的例項域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。

裡式替換原則

這個原則簡直就是父類與子類糾纏不清,父類轉子類,子類轉父類。
為了能夠實現,而程式的功能不受影響。在繼承的時候,父類中一定要存在非私有的成員,子類一定能夠得到父類的這些非私有成員。

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("我是一名學生"); } }