zoukankan      html  css  js  c++  java
  • 面向对象之虚方法

    父类引用指向子类对象(基类声明变量,子类实例化)注意三种情况

    一)、基类是否有virtual,先扫描自己(基类),如果没有,调用自己(基类)的方法,当然所有继承它类的子类就不能有override方法:

        public class Person
        {
            public  void show()
            {
                Console.WriteLine("我是人");
            }
        }

        public class Student : Person
        {
            public  void show()
            {//override若存在就会报错
                Console.WriteLine("我是学生!");
            }
        }

        public class Teacher : Person
        {
            public void show()
            {
                Console.WriteLine("我是教师");
            }
        }

    父类引用指向子类对象:

    Person person = new Student();
    person.show();

    输出结果:

    二)、基类有virtual,子类是否有override,若没有,还是调用自己(基类)的方法:

        public class Person
        {
            public virtual void show()
            {
                Console.WriteLine("我是人");
            }
        }

        public class Student : Person
        {
            public void show()
            {
                Console.WriteLine("我是学生!");
            }
        }

    父类引用指向子类对象:

    Person person = new Student();
    person.show();

    输出结果:

    三)、基类含有virtual,子类有override,调用子类的方法:

        public class Person
        {
            public virtual void show()
            {
                Console.WriteLine("我是人");
            }
        }

        public class Student : Person
        {
            public override void show()
            {
                Console.WriteLine("我是学生!");
            }
        }

    父类引用指向子类对象:

    Person person = new Student();
    person.show();

    输出结果:

     

    子类实例化子类

     扫描自己是否有方法,如果没有,找基类的方法,基类若没有,再往上基类找,一直往上面找,若找不到就报错:

        public class Person
        {
            public virtual void show()
            {
                Console.WriteLine("我是人");
            }
        }

        public class Student : Person
        {

        }

    Student student = new Student();
    student.show();

    输出结果:

     

  • 相关阅读:
    【PS技巧】常用概念和功能操作
    【存储】RAID磁盘阵列选择
    【Python 01】Python一种面向对象、解释型计算机程序设计语言
    【PS技巧】如何校正倾斜的图片
    【阿里巴巴大数据实践笔记】第14章:存储和成本管理
    【阿里巴巴大数据实践笔记】第13章:计算管理
    【阿里巴巴大数据实践笔记】第9章:阿里巴巴数据整合及管理体系
    今晚直播丨抢鲜体验-openGauss入门
    详述一则数据库死锁故障的分析过程
    前端学习笔记(一)HTML入门
  • 原文地址:https://www.cnblogs.com/scsuns520/p/1632682.html
Copyright © 2011-2022 走看看