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了
发布了72 篇原创文章 · 获赞 40 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44031029/article/details/104994858