C#子類如何重寫父類的方法

子類重寫父類的方法代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace 視頻3._5
{
    class Program
    {
        static void Main(string[] args)
        {
        	Person p = new Person(); //實例化父類的對象
            p.Show();  //調用父類方法

            Teacher t = new Teacher(); //實例化子類對象
            t.Show(); //調用子類方法

            Console.ReadKey();
        }
		
		public class Person //父類人類
        {
        	private string _name; //字段
            public string Name  //屬性
            {
                get { return _name; }
                set { _name = value; }
            }

            private int _age;
            public int Age
            {
                get { return _age; }
                set { _age = value; }
            }

            private char _gender;
            public char Gender
            {
                get { return _gender; }
                set { _gender = value; }
            }
            public virtual void Show()  //虛方法---
            {
                Console.WriteLine("我是人別害怕");
            }

        }

		public class Teacher : Person
        {
            public override void Show()//重寫父類方法
            {
                Console.WriteLine("我是老師別害怕");
            }
        }
        

說明如下:

  • 子類的方法名可以和父類的方法名重寫,但是代碼會出現一條綠線,並不影響使用。
  • 怎麼解決——可以在子類的publi修飾符後面加 new 就解決了,無論是否加new都不影響使用。
  • 第二種解決綠線的辦法:在父類的方法的public修飾符後加 virtual
  • 在子類中重寫父類的方法,加上一個override。調用父類的方法,但是把父類的方法進行重寫了
  • 更換了方法裏面的內容
  • 虛方法不能用static修飾、不能寫成靜態的,已經是虛方法了沒有必要變成靜態的。private在本類中只能訪問、子類訪問不到,寫成虛方法就是爲了讓其他子類重寫。
  • virtual不能與private一起使用
  • 子類當中可以拿到父類的方法、子類中new下就OK了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章