深入理解多态 笔记

 1.继承:如果类A从类B中可以获取到公共信息,那么这种机制称为继承。

    2.关于base关键字
       base.父类属性
       base.父类方法
       base()

    3.protected 受保护的。在当前类和子类中可以访问。(锁定/限定的对象:类中的变量)
     
    4.子类构造揭秘

    5.继承的两个特性,单根性 和 传递性(子类的子类可以获取到父类的信息)

    6.多态:
       多个对象,,,对于同一个操作,做出的响应不同。这种机制称为多态。
    7.构成多态的条件
      父类要有虚方法,子类需要用Override关键字重写虚方法。

7.多态高级   Java++
1.多态
  里氏替换原则:
    子类除了可以具有父类非私有的成员和方法外,还可以
拥有自己特有的成员变量和方法。

 2.is和as
   is做的是类型判定
   as做的是类型转换 ,()强转。本行code不会有错误,如果转换不了。返回null
   
 3.父类的虚方法,在子类中不必强制重写
   父类的抽象方法,子类必须强制重写。?
 
 4.抽象方法实现多态
   父类得是抽象类,而且定义了抽象方法
   子类必须重写抽象方法
   
 5.抽象类和抽象方法注意点:手写()
   1.抽象类使用Abstract关键字修饰。
   2.抽象方法只能位于抽象类中。
   3.抽象类不能实例化 
   4.抽象方法不能有方法体,甚至连{}都没有 
   5.抽象类不能是静态类或者密封类
   6.子类必须重写抽象类中的所有抽象方法,除非子类本身也是一个抽象类
   7.抽象类中可以有普通方法
   8.抽象类可以有构造函数
   9.重写所有抽象方法的快捷键是Ctrl+.
   10.抽象类中抽象方法就是用来约束子类方法形式(签名)的
   
   原理要解:抽象类其实是可以实例化的,但是他的实例化方式不是通过new方式来创建对象,
   而是通过父类的引用来指向子类的实例来间接地实现父类的实例化
   (因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,
   也就把其父类(抽象类)给实例化了).
   
   结论:抽象类是可以实例化的,不能通过new实例化,可以通过子类构造自动调度父类构造实例化
 6.接口
      项目中业务必须使用接口。
  后来:接口就一个用Interface 修饰的++++++++++开发中的接口
  
  1.接口也是一种数据类型
  2.案例:飞机和小鸟都能飞,他们都实现了IFly这个接口。但是他们飞翔的方式不同。这也是多态的一种实现方案
       一个类实现一个接口 100个方法 ,其中只有一个方法必须要实现的。

    .method public hidebysig newslot abstract virtual instance void Fly() cil managed
    {
    }

      3.接口污染
  
  4.一个类实现N个接口,就是之前我们提到的变相的多继承。
   类和接口:类实现接口
   
   接口和接口 :继承
   
      5.父类变量指向子类对象
    Typer和Coder

posted @ 2017-03-22 10:53  <烟花易冷>  阅读(369)  评论(0编辑  收藏  举报