子類重寫父類的方法代碼如下:
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了