C#多态联系之虚方法

 class Class1
    {
        static void Main(string[] args)
        {
            YuanGong yg = new YuanGong();
            JingLi jl = new JingLi();
            LaoBan lb = new LaoBan();

            //声明一个数组的父类
            YuanGong[] ayg = { yg, jl, lb };
            //遍历数组
            for (int i = 0; i < ayg.Length; i++)
            {
                ayg[i].DaKa();
            }
            Console.ReadKey();
        }

    }
    public class YuanGong
    {
        //virtual虚拟,在子类中改变后,用父类实例化子类后可以调用子类方法
        public virtual void DaKa()
        {
            Console.WriteLine("员工九点打卡");
        }
    }
    public class JingLi:YuanGong
    {
        //override 接收对应 virtual
        public override void DaKa()
        {
            Console.WriteLine("经理十点打卡");
        }
    }
    public class LaoBan:YuanGong
    {
        public override void DaKa()
        {
            Console.WriteLine("老板不打卡");
        }
    }
时间: 2024-11-07 11:44:13

C#多态联系之虚方法的相关文章

多态实现之--虚方法

多态实现共有三种途径,分别是:虚方法.抽象类.接口,本篇讲述第一种方法:虚方法. 1. 什么是虚方法?虚方法,从语法上来说是被virtual关键字修饰的方法,从含义上讲,这个方法在类被继承后可以在子类重写(override). 2. 在子类中重写虚方法需要注意哪些问题?首先说明的是,子类中的重写并不是必须的,因为父类中的虚方法本身也是有函数体的(除非是抽象方法),所以如果进行重写则会覆盖从父类中的虚方法,否则直接调用父类的该方法. 3. 是怎样体现多态的?在调用的时候子类只需要调用同一个方法,如

浅谈 C# 多态的魅力 - 虚方法、抽象、接口实现

提前总结:需方法.抽象方法可以重写,子类继承父类,抽象方法没有方法体,不能实例化 前言:我们都知道面向对象的三大特性:封装,继承,多态.封装和继承对于初学者而言比较好理解,但要理解多态,尤其是深入理解,初学者往往存在有很多困惑,为什么这样就可以?有时候感觉很不可思议,由此,面向对象的魅力体现了出来,那就是多态,多态用的好,可以提高程序的扩展性.常用的设计模式,比如简单工厂设计模式,核心就是多态. 其实多态就是:允许将子类类型的指针赋值给父类类型的指针.也就是同一操作作用于不同的对象,可以有不同的

c# 多态实现_虚方法

实现方法: 虚方法, 抽象类, 接口 1.虚方法 将父类的方法标记为虚方法,使用关键字virtual,这个方法可以被子类重新写一遍. 在父类的方法前面加上一个virtual,在子类的方法前面加上一个override:如果子类的方法前面不加override,编译器不会报错,但这样的话,就无法通过父类来调用子类的方法,因为这个方法成了子类的独有的方法,只是名字与父类相同而已,与父类无关. 注意:如果需要对父类的方法进行重写的话,一定要在子类的方法面前加上overrie进行修饰. 什么时候使用:几个类

c# 多态的美丽(虚方法、抽象、接口实现)

面向对象3大特性:封装.继承.多态. 面向对象2大原则: 1)里氏替换原则:子类可以给父类,父类不能赋给子类. 2)开放封闭原则: 封装变化,降低耦合.(对扩展开放,对修改封闭) **************** 多态定义:允许子类类型的指针赋值给父类类型的指针.父类可以成为一种子类,实现这种子类的操作. 多态实现:1)虚函数 overwrite  2)抽象类:abstract class,简化父类的定义,在不需要创建父类对象的场合,可以使用抽象类 2)接口 多态目的:可以屏蔽不同子类对象之间的

多态,虚方法重写,抽象类,接口

简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写 子类重写父类的方法使用的是override关键字 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { public

使用虚方法和多态来改善源代码的扩展性

-多态:(转自CSND) 通过继承,一个类可以用作多种类型:可以用作它自己的类型.任何基类型,或者在实现接口时用作任何接口类型.这称为多态性.C# 中的每种类型都是多态的.类型可用作它们自己的类型或用作 Object 实例,因为任何类型都自动将 Object当作基类型. 多态性不仅对派生类很重要,对基类也很重要.任何情况下,使用基类实际上都可能是在使用已强制转换为基类类型的派生类对象.基类的设计者可以预测到其基类中可能会在派生类中发生更改的方面.例如,表示汽车的基类可能包含这样的行为:当考虑的汽

多态—虚方法、抽象类、接口

修饰符:public : 公共的,引用命名空间即可随意访问,访问权限最高:private : 私有的,只有在声明它的类和结构中才可以访问,访问权限最低: Internal : 内部的,同一个程序集中所有的类都可以访问,程序集就是命名空间, 访问权限次最高,这个访问修饰符是默认的:Protected : 受保护的,只能在他自己和自己的子类中才能访问. --------------------------------------------------------------------------

浅谈C# 多态的魅力(虚方法,抽象,接口实现)

浅谈C# 多态的魅力(虚方法,抽象,接口实现) 分类:             asp.net             C#              2014-02-08 11:29     786人阅读     评论(0)     收藏     举报 浅谈C# 多态的魅力(虚方法,抽象,接口实现) 前言:我们都知道面向对象的三大特性:封装,继承,多态.封装和继承对于初学者而言比较好理解,但要理解多态,尤其是深入理解,初学者往往存在有很多困惑,为什么这样就可以?有时候感觉很不可思议,由此,面向

虚方法,重写————继承、多态、面向对象!

1. this 不能直接调用 非static成员class A{static public void M1(){ Hello(); // 错误 在static成员中不能 直接调用非static成员 A a=new A(); a.Hello();}public void Hello(){ F1 =10: M1(); A.M1(); this.M1() //错误 不能调用}} 2. 静态类不能new: 静态类中不能声明非静态成员. 3.sealed 密闭类不能被继承 Fromwork 4.Paint