zoukankan      html  css  js  c++  java
  • .net基础加强

    一、里氏替换:子类可以直接赋值给父类变量、父类可以强制转换为对应的子类对象
    is bool 变量 is 类型
    as 类型对象 变量 as 类型

            MyBase mb;
            MyClass1 mc1 = new MyClass1();
            MyClass2 mc2 = new MyClass2();
            mb = mc1;
            if (mb is MyClass1)
            {
                MyClass1 m1 = (MyClass1)mb;
                Console.WriteLine("ok");
            }
            else
            {
                Console.WriteLine("no");
            }
            
            Console.ReadKey();
    
    
            MyClass2 mm2 = mb as MyClass2;
            if(mm2!=null)
            {
                Console.WriteLine("ok");
            }
            else
            {
                Console.WriteLine("no");
            }
    

    二、多态实现方式:

          1、new 隐藏基类方法实现
            MyClass c1 = new MyClass();
            //c1.Func();
            //MyBase b = c1;
            //b.Func();
            ((MyBase)c1).Func();//对象没有变,变的是环境,但是表现出来的结果是不一样的
            //new 是隐藏基类方法,调用时看类型,类型决定调用的方法是谁提供的
            Console.ReadKey();
          2、virtual虚方法实现,子类override重写
            class MyBase
            {
              public virtual void Func()
              {
               Console.WriteLine("父类的方法");
              }
            }
    
           class MyClass:MyBase
           {
              public override void Func()
              {
                Console.WriteLine("子类的方法");
              }
           }
    
            //MyBase m = new MyBase();
            MyClass m1 = new MyClass();
            m1.Func();//子类的方法
    
            MyBase m = m1;
            m.Func();//子类的方法
            Console.ReadKey();
    
         3、抽象方法实现
    

    关于虚方法需要注意的几点:
    1.父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
    2.虚方法在父类中必须有实现,哪怕是空实现。
    3.虚方法子类可以重写(override),也可以不重写
    关于抽象方法注意的几点:
    1.需要用abstract关键字标记
    2.抽象方法不能有任何方法实现。
    3.抽象成员必须包含在抽象类中。
    4.由于抽象成员没有任何实现,所以子类必须将抽象成员重写。
    5.抽象类不能实例化,
    抽象类的作用:抽象类的作用就是为了让子类继承。
    6.抽象类中可以包括抽象成员,可以包括有具体代码的成员。
    7. 还有抽象方法不能用static修饰

         4、接口实现
    

    1.接口中只能包含方法(属性、事件、索引器也都是方法)
    2.接口中的成员都不能有任何实现。
    3.接口不能被实例化。
    4.接口中的成员不能有任何访问修饰符。(默认为public)
    5.实现接口的子类必须将接口中的所有成员全都实现。
    6.子类实现接口的方法时,不需要任何关键字,直接实现即可。
    7.接口存在的意义就是为了多态。

  • 相关阅读:
    面向对象案例
    Leetcode--9. 回文数
    调试seanbell/intrinsic遇到的坑
    Ubuntu16.04OPENGL初体验
    Ubuntu16.04重装NVIDIA驱动
    C++之封装继承和多态
    CMKAE简单实用指南
    【学习笔记】C/C++
    C++之重载覆盖和隐藏
    C++之指针和引用
  • 原文地址:https://www.cnblogs.com/poli/p/4365395.html
Copyright © 2011-2022 走看看