• 面向对象之虚方法


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

    一)、基类是否有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();

    输出结果:

     

  • 相关阅读:
    类型参数化
    scala 集合类型
    scala 列表List
    统计HDFS 上字节数据统计
    用scala 实现top N 排名
    scala 基础笔记
    Java 设计模式之 装饰者模式
    通过java api 读取sql 中数据(查询)
    leetcode 34. Search for a Range
    canvas画简单电路图
  • 原文地址:https://www.cnblogs.com/scsuns520/p/1632682.html
Copyright © 2020-2023  润新知