日期:2014-05-17  浏览次数:20915 次

C# 继承 (virtual、override、new、sealed)

?

1、C#中的继承写法

?

子类应用父类的方法 属性 使用关键字 “base” 。

?

?

/* C#中的继承父类的关键字是 “:”  */
class Son : Father {
}

?

?

2、virtual、override、new

?

?C#中不支持隐式重写子类中的方法

?

virtual ? ? 父类中需要注明允许重写的方;

override ?子类中必须显示声明该方法是重写的父类中的方法;

new ? ? ? ?子类中忽略父类的已存在的方法,“重写该方法;”

?

?

//父类方法
class Father {
       
        public string SayHello() {
            return "Hello ~!";
        }
     
        /* 父类中声明该方法是允许重写的方法(virtual) */
        public virtual string SayNo() {
            return "Hello No ~! ";
        }
    }

//子类方法
class Son : Father {
        //new是指“隐藏”,是指子类隐藏了父类的方法,当然,通过一定的转换,可以在子类的对象中访问父类的方法。
        //override是指“覆盖”,是指子类覆盖了父类的方法。子类的对象无法再访问父类中的该方法。
        public new string SayHello() {
            return "!!!!!!!!!!";
        }
   
        /* 子类中注明该方法是重写方法 (override);父类方法是abstract 修饰时,子类重写该方法也使用(override) */
        public override string SayNo() {
            return "no ~~~~ !!!!";
        }
    }

?

?

3、sealed?

?

C# 禁止子类方法重写父类方法的关键字,类似于java 中的 final;

?