继承:

  是c#中面向对象一个重要概念:

    用一个已经存在的类去定义一个新的类

      新的类叫做   子类/派生类

      已经存在的类叫做   父类/基类

  c#中所以类的最终基类都是Object类

  声明

  访问修饰符  class  派生类名:基类名{

  }

  特性:

    1.一个类只可以继承一个基类

    2.派生类拥有基类的所以属性和方法

    3.基类的成员不允许子类访问,子类是无法访问的

    4.子类会默认调用父类的默认构造函数

    

  访问修饰符

    1.protected 继承

    2. internal 本程序集(类和结构体的默认访问修饰符)

    引用其他程序集,使用using 关键字

    也可以直接通过dot语法,找到对应的命名空间. 类名

  命名空间

    同一个命名空间下的东西不能重名,可以直接调用

    不同命名空间下的类可以重名,所以 可以用命名空间来区分不同的代码

  this 和 base  

    this关键字指向自身或者自身构造函数

    base关键字指向父类的实例或者父类的构造函数

  new

     1.实例化一个对象

     2.为子类的成员申请一个新的空间

     如果子类中有成员与父类中的成员重名,可以用new关键字为子类中这个成员

      申请一个新空间,以便于计算机识别,如果不写,将默认启用new

  里氏转化原则

    1.子类可以当做父类去使用(因为子类拿到了父类的所有内容)

    2.父类变量可以装载子类,甚至可以强制转换成子类对象去使用(因为父类盒子里装的就是子类的内容)

    is :判断这个变量是否能转换成对应类型,如果可以,返回t,否则返回f

    as:尝试转换,如果能,返回转换过后的对象,如果不能,返回null

    is和as 要搭配使用,则要可以避免空引用报错

    

//如果父类对象中装的是子类,那么我们可以把它强转成子类类型,并且去使用
Prams x = new Pramsman();//new一个子类对象放到父类类型的 x 里 if(x is Pramsman )
{
Pramsman p1 = (x as Pramsman);
p1.WatchMovie();
}

  

c#继承 里氏转化原则的更多相关文章

  1. .net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串

    1.继承(1)创建子类对象的时候,在子类对象中会为子类对象的字段开辟空间,也会为父类的所有字段开辟空间,只不过父类私有的成员访问不到(2)子类从父类继承父类所有的非私有成员,但是父类的所有字段也会创建 ...

  2. 里氏替换原则LSP(继承规范)

    继承的优点: 1.代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性. 2.提高代码的重用性. 3.子类可以形似父类,但又异于父类. 4.提高代码的可扩展性,实现父类的方法就可以“为所欲为” ...

  3. [OOD]违反里氏替换原则的解决方案

    关于OOD中的里氏替换原则,大家耳熟能祥了,不再展开,可以参考设计模式的六大设计原则之里氏替换原则.这里尝试讨论常常违反的两种形式和解决方案. 违反里氏替换原则的根源是对子类及父类关系不明确.我们在设 ...

  4. 【C#小知识】C#中一些易混淆概念总结(六)---------解析里氏替换原则,虚方法 分类: C# 2014-02-08 01:53 1826人阅读 评论(0) 收藏

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...

  5. 面向对象五大原则_1.单一职责原则&2.里氏替换原则

    单一职责原则:Single Responsibility Principle (SRP) 一个类.仅仅有一个引起它变化的原因.应该仅仅有一个职责.每个职责都是变化的一个轴线.假设一个类有一个以上的职责 ...

  6. 设计模式之里氏代换原则(LSP)

    里氏代换原则(Liskov Substitution Principle, LSP) 1 什么是里氏代换原则 里氏代换原则是由麻省理工学院(MIT)计算机科学实验室的Liskov女士,在1987年的O ...

  7. 里氏替换原则(Liskov Substitution Principle)

    开放封闭原则(Open Closed Principle)是构建可维护性和可重用性代码的基础.它强调设计良好的代码可以不通过修改而扩展,新的功能通过添加新的代码来实现,而不需要更改已有的可工作的代码. ...

  8. 第2章 面向对象的设计原则(SOLID):2_里氏替换原则(LSP)

    2. 里氏替换原则(Liskov Substitution Principle,LSP) 2.1 定义 (1)所有使用基类的地方必须能透明地使用子类替换,而程序的行为没有任何变化(不会产生运行结果错误 ...

  9. 2.里氏替换原则(Liskov Substitution Principle)

    1.定义 里氏替换原则的定义有两种,据说是由麻省理工的一位姓里的女士所提出,因此以其名进行命名. 定义1:如果对一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1所定义的程序P中在o1全都 ...

随机推荐

  1. 项目开发中关于jquery中出现问题小结(textarea,disabled,关键字等)

    1.textarea: 使用 定义了一个textarea,在使用jquery的方法获取文本内容的时候总是为空. var content = $(“#content”).val();  后来测试发现,i ...

  2. vscode 快捷键

    ctrl+/   单行注释:// 若要多行注释://,先选中这些要注释的行,再按ctrl+/ shift+Alt+A 多行注释 撤销刚才的操作:Ctrl+Z 恢复刚才的操作:Ctrl+Shift+Z ...

  3. C++ 多目录多文件编译 技巧

    http://www.cplusplus.com/forum/articles/10627/ 1.hpp文件 hpp文件可以使用template函数和class静态函数(不含静态成员) a)不可包含全 ...

  4. CSS布局-body高度不等于页面高度

    记录采坑: 博客记录问题,用作回忆用,不喜勿喷! html,body{width: 100%; height: 100%}这是初始定义的宽高.在布局越写越复杂的时候,布局很容易出现问题,例如一个页面中 ...

  5. css3 二级菜单

    <!doctype html><!--<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前.此标签可告知浏览器文档使用哪种 HTM ...

  6. js获取html元素在可视区域的位置

    1)html节点在可视区域的位置 obj.getBoundingClientRect().top obj.getBoundingClientRect().left 2) 获取鼠标按下的位置 event ...

  7. Spring 源码学习(1)—— 容器的基本实现

    最近在读Spring的源码,参考的是郝佳的<Spring源码深度解析>,这里把一些学习心得分享一下,总结的地方可能还有一些不完善,希望大家指教 IoC(控制反转)是Spring的特性之一, ...

  8. MySQL:视图

    视图 一.视图的概述 1. 含义:是从数据库中一个或多个表中导出的虚拟表2. 作用:①简单化 ②安全性 ③逻辑数据独立性3. 注意:一个表可以由多个视图: 二.视图的创建 1. 总的语法形式 CREA ...

  9. nodejs --- formidable模块 , post 上传.

    1. 只有一个文件域: var formidable = require('formidable'), http = require('http'), util = require('util'); ...

  10. postman之如何获取cookie

    1.最近在学习postman的使用方法,为了保证后续模块操作,必须在登录时获取的session值,并将其设置为环境变量,session的位置处于response headers里面返回的set-coo ...