多态之虚方法

1.虚方法用到两个关键字

virtual 和 override  

当子类继承与父类对象时,声明一个父类对象,通过在子类中重写父类对象的方法,可以直接调到子类的方法  

 

public class Person

    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }


        public Person(string name)
        {
            this.Name = name;
        }
        public virtual void SayHello()
        {
            Console.WriteLine("我是人类");
        }

    }

public class Chinese : Person
    {
        public Chinese(string name)
            : base(name)
        {


        }


        public override void SayHello()
        {
            Console.WriteLine("我是中国人,我叫{0}", this.Name);
        }
    }

 

2.抽象类,一般父类为抽象类,抽象成员必须在抽象类中,抽象类中也可以有非抽象成员(个人感觉抽象类是实现多态的一个介质)

1)抽象类的关键字为abstract,且不能被实例化

2)抽象类的方法必须为abstract修饰,且没有方法体。

3)子类继承父类对象方法也是用override进行重写

4)如果子类继承抽象类,则必须实现抽象类中的所有方法,且继承这个抽象父类的子类在重写父类方法时必须传入和父类抽象方法一样的参数,包括返回值也必须一样

-------------虚方法和抽象类

1)如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义为一个普通类,用虚方法来实现

2)如果父类中的方法没有默认实现,父类不需要被实例化,则可以将该类定义为抽象类。

public abstract class Animal
    {

public abstract void  SayHello()

}

public class dog():Animal

{

public override void SayHello()

{

        }

}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值