zoukankan      html  css  js  c++  java
  • 面向对象(二) 继承/里氏替换

    父类:基类
    子类:派生类
    继承的概念:
    1.传递性:子类能继承父类的所有方法、属性
    2.单根性:类只能继承一个父类
    继承的注意的问题:
    1.创建子类对象的时候,会为子类与父类的对象的字段提供空间
    2.父类不能继承子类
    3.构造方法不能被继承,但是可以在子类用添加 base(指定引用)
    4.子类能继承父类的属性与方法、但是私有的方法只能被继承,不能被使用
    5.基本格式:
    子类:父类 base("构造方法")
    6.基本的访问修饰符
    public 公开的类 任何都能访问
    prive 私有的类 只能在类中进行访问
    protected 受保护的类 只能在本类或者子类进行访问
    二:里氏替换
    概念:父类引用可以指向一个子类,看到的也只是父类的引用
    2.里氏替换的原则:
    父类不能替换成子类
    子类能替换成父类
    Parent p=new Son()
    Son s=(Son)p; --正确
    Parent p=new Parent()
    Son s=(Son)p; --错误
    注:因为继承的概念就是子孙类会越来越比祖先类详细,所以可以将子孙类强制转换成祖先类,因为祖先有的行为子孙类示例都有了(重新定义的或者是默认的);但是当将祖先类示例强制转换成子孙类示例的时候,一些子孙类有的行为祖先是没有的(即使的是默认的实现也没有)。

    7.过程:创建子类的时候先条用子类的构造函数,然后再调用父类的构造函数
    执行父类的构造函数后,再执行子类的构造函数。
    1.父类引用能引用到子类的父类引用,可以看到,但是无法使用。
    例:
    a(父类引用)se(子类对象)=new se();
    2.1 子类可以访问包括父类的引用以及自己的属性
    se(子类) ss=new se();
    3.如果需要父类访问到子类的字段,必须要转换
    4.转换的方式有两种:
    1.(子类类型) 父类引用 //会报错
    2.父类引用 as 子类类型 //不会报错、但是会返回一个null值
    5.判断父类的对象引用类型,父类引用 is 子类类型 并且返回一个布尔值
    例:if(数组[i] is pe)
    {

    ((pe)数组(I).方法/属性)
    }

  • 相关阅读:
    IIS 解决问题:HTTP 错误 401.1
    Mvc
    如何将word公式粘贴到UMEditor里面
    SpringCloud上传大文件并支持中途取消上传
    SpringBoot上传大文件并支持中途取消上传
    SpringMVC上传大文件并支持中途取消上传
    csharp上传大文件并支持中途取消上传
    c#上传大文件并支持中途取消上传
    .net上传大文件并支持中途取消上传
    c#.net上传大文件并支持中途取消上传
  • 原文地址:https://www.cnblogs.com/liyiyong/p/5050151.html
Copyright © 2011-2022 走看看