• C#三大支柱之多态


    1、包含与委托---has-a

    2、嵌套类型(枚举、类、接口、结构等)

     由于只有嵌套类才可声明为私有,通过嵌套类则可以完全控制内部类型的访问级别。

       嵌套类型是包含类的成员,所有可以访问包含类的私有成员。

       通常嵌套类型只用做外部类的辅助方法,而不是为外部世界所准备的。

    3、方法重写------重新定义基类已经定义的方法

       如果基类希望其定义的方法可以由子类重写,就必须用virtual标志方法即虚方法。

       如果子类希望重写父类的方法实现则必须使用override标志方法。

       密封虚方法:若不希望子类重写父类的方法则可以在父类中将方法用sealed标志。

    4、多态接口

     抽象基类的多态接口指一组虚的或者抽象的方法。

     抽象方法:

      必须在子类中进行实现。

        只能定义在抽象类中。

        说明:不能直接创建抽象类的实例,但是可以使用它来保存任何子类的引用。

     1 static void Main(string[] args)
     2         {
     3             Console.WriteLine("***** Fun with Polymorphism *****
    ");
     4 
     5             // Make an array of Shape-compatible objects.
     6             Shape[] myShapes = {new Hexagon(), new Circle(), new Hexagon("Mick"),
     7                                 new Circle("Beth"), new Hexagon("Linda")};
     8 
     9             // Loop over each item and interact with the
    10             // polymorphic interface.
    11             foreach (Shape s in myShapes)
    12             {
    13                 s.Draw();
    14             }
    15 
    16             // This calls the Draw() method of the ThreeDCircle.
    17             ThreeDCircle o = new ThreeDCircle();
    18             o.Draw();
    19 
    20             // This calls the Draw() method of the parent!
    21             ((Circle)o).Draw();
    22             Console.ReadLine();
    23         }
    View Code

    5、成员投影

    如果在子类中重新定义与父类完全相同实现不同的方法,可以:

        方法重写:即将父类方法声明为虚方法

        成员投影:在子类方法实现前添加new关键字以显示声明派生类型而隐藏父类的版本。也可应用于属性

    6、父类与子类的转换规则

         基类引用中保存派生类是安全的,被称作隐式转换。

      使用强制转换操作符进行显示向下转换,被称作显示转换。

      如:(ClassIWantToCastTo) referenceIHave

    注:显示转换在运行时而不是编译时处理,即若发生无效显示转换时编译不会报错。可以使用异常处理进行容错编程,也可以使用as或is关键字进行兼容性检测。as检测后返回null引用,is则返回false

      如: Hexagon hex2 = frank as Hexagon;

        if(hex2 == null)

          Console.WriteLine("wrong");

    7、超级父类Object

        如果没有声明一个类的父类,则隐式会从Object派生

      

  • 相关阅读:
    第八周作业。
    作业。
    第七周作业。
    作业。
    Android简易计算器
    Android第四周
    java6.12
    java5.29
    java5.28
    java5.22
  • 原文地址:https://www.cnblogs.com/kelite/p/3354874.html
Copyright © 2020-2023  润新知