• C#面向对象--继承


    1、继承

    继承:类与类之间可以具有继承关系,一个类只能继承一个父类,但可以被好多类继承

    构成继承关系的两个类中:父类或基类;子类。

    父类与子类的基本特性:

          是一种(IS_A)关系:子类是父类的一种特例。

          扩充(Extends)关系:子类拥有父类所没有的功能。

    2、类成员的访问特权
      公有         public         访问不受限制
      私有         private       只有类自身成员可以访问
      保护         protected    子类可以访问,其他类无法访问

    (1)、public和private
    主要用于定义单个类的成员存取权限

    (2)、protected
    当一个类成员被定义为protected之后,所有外界类不可以访问它,但其子类可以访问。

    当创建子类对象后,外界可以访问子类的所有成员和父类公有成员。


    继承条件下的类成员访问权限:

      所有不必让外人知道的东西都是私有的。
      所有需要向外提供的服务都是公有的。
      所有的“祖传绝招”,“密不外传”的都是保护的。

    (3)、internal

    只局限于同一个程序集内部
    internal是C#的默认可访问性,这就是说,如果某个类没有任何可访问性关键字在它前面
    ,则它就是internal的。

    3、子类父类变量的互相赋值

          *引用类型与值类型的区别

      

    总结:

    一共三部分:子类继承父类;子类转换成父类类型;父类转换成子类

      继承:类与类之间的关系:父子关系

      子类继承父类,一个类只能继承一个父类

      当子类继承父类之后就拥有了父类的公共属性和方法

      子类对象可以直接转换为父类类型,但父类对象不能直接转换为子类类型,当某个父类对象 是通过子类对象转换来的时候,通过父类类型不能点出来子类的属性和方法。

      只有当从某个子类对象转换来的父类对象,才能再转换回去

      对象的等号赋值,实际赋值的是指向
      Class1 c = new Class1();
      Class1 d = c; 那么d和c是一个东西。

       子类对象可以被当成基类对象使用

       如果确信父类变量中所引用的对象的确是子类类型,则可以通过类型强制转换进行赋值:
     
       子类对象变量=(子类名称)基类对象变量;

       或使用as运算符

       子类对象变量=基类对象变量 as 子类名称

    4、方法重载、隐藏与虚方法调用

      扩充:子类方法,父类没有;

      重载:子类有父类的同名函数,但参数类型或数目不一样;

      完全相同:子类方法与父类方法从方法名称到参数类型完全一样。

    (1)重载(overlord)

        同名函数,参数类型不同

     父类 子类 

       同名函数,参数类型相同

     

        类型转换

    总结

    当子类继承父类的时候,父类中的与子类同名不同参数的的方法,可与子类方法构成重载关系
    父类只能读自己的方法,不能调用子类的。
    父类有一个和子类同名参数的方法的时候,通过父类类型对象调的是父类的方法
    通过子类类型调用的是子类的方法

    (2)、隐藏

    (3)、重写与虚方法调用


    父类是虚 ,子类是覆盖。

      面向对象语言拥有的“虚方法调用”特性,使我们可以值用同样的一个语句,在运行是根据对象类型而执行不同的操作。

  • 相关阅读:
    自定义上传图片拼图游戏
    react 移动端 兼容性问题和一些小细节
    利用AudioContext来实现网易云音乐的鲸鱼音效
    解决跨域问题,实例调用百度地图
    SVG vs Image, SVG vs Iconfont
    保存登陆username和password
    Android学习之——优化篇(2)
    ubuntu下新建用户
    PHP Laravel 本地化语言支持
    apache 绿色版 安装
  • 原文地址:https://www.cnblogs.com/huluobozu/p/5074442.html
Copyright © 2020-2023  润新知