C#开发之——base关键字(6.7)

一 概述

  • 在C#语言中子类中定义的同名方法相当于在子类中重新定义了一个方法,在子类中的对象时调用不到父类中的同名方法的,调用的是子类中的方法

  • 因此也经常说成是将父类中的同名方法隐藏了

<!--more-->

二 实例

2.1 实例一 在Main方法中分别创建前面编写过的Person、Teacher以及Student类的对象,并调用其中的Print方法

2.1.1 代码

<span style="color:#333333">namespace code_1
{
    class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person();
            Console.WriteLine("Person类的Print方法打印内容");
            person.Print();
            Student student = new Student();
            Console.WriteLine("Student类的Print方法打印内容");
            student.Print();
            Teacher teacher = new Teacher();
            Console.WriteLine("Teacher类的Print方法打印内容");
            teacher.Print();
        }
    }
    class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        public string Cardid { get; set; }
        public string Tel { get; set; }
        public void Print()
        {
            Console.WriteLine("编号:" + Id);
            Console.WriteLine("姓名:" + Name);
            Console.WriteLine("性别:" + Sex);
            Console.WriteLine("身份证号:" + Cardid);
            Console.WriteLine("联系方式:" + Tel);
        }
    }
    class Student : Person
    {
        public string Major { get; set; }
        public string Grade { get; set; }
        public void Print()
        {
            Console.WriteLine("专业:" + Major);
            Console.WriteLine("年级:" + Grade);
        }
    }
    class Teacher
    {
        public string Title { get; set; }
        public string WageNo { get; set; }
        public void Print()
        {
            Console.WriteLine("职称:" + Title);
            Console.WriteLine("工资号:" + WageNo);
        }
    }
}</span>

2.1.2 执行结果

 

2.1.3 说明

  • 从上面的执行结果可以看出,在创建不同类的对象后,调用同名的方法Print效果是不同的

  • 创建子类的对象仅能调用子类中的Print方法,而与父类中的Print方法无关

  • 在继承的关系中,子类如果需要调用父类中的成员可以借助base关键字来完成,具体的用法为base.父类成员

  • 如果在同名的方法中使用base关键字调用父类中的方法,则相当于把父类中的方法内容复制到该方法中

2.2 实例二 改写实例1中的Student和Teacher类中同名的Print方法,使用base关键字调用父类中的Print方法

2.2.1 代码

<span style="color:#333333">class Teacher:Person
{
    public string Title { get; set; }
    public string WageNo { get; set; }
    public void Print()
    {
        base.Print();
        Console.WriteLine("职称:" + Title);
        Console.WriteLine("工资号:" + WageNo);
    }
}
class Student:Person
{
    public string Major { get; set; }
    public string Grade { get; set; }
    public void Print()
    {
        base.Print();
        Console.WriteLine("专业:" + Major);
        Console.WriteLine("年级:" + Grade);
    }
}</span>

2.2.2 执行结果

 

2.2.3 说明

  • 从上面的执行效果可以看出,通过base关键字调用Print方法即可调用在父类中定义的语句

  • 用户在程序中会遇到this和base关键字,this关键字代表的是当前类的对象,base关键字代表的是父类中的对象

 

猜你喜欢

转载自blog.csdn.net/Calvin_zhou/article/details/107498611