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了