zoukankan      html  css  js  c++  java
  • 面向对象个人总结其三 多态(一)

    多态的概念:
    指不同类可以根据对象的不同而采取不同的多种不同的方式
    多态的基本点:
    1.里氏替换:
    a:允许父类引用指向子类对象
    b:如果要访问子类字段必须要强制转换 //在继承中有明确讲道。
    2.方法重写(虚方法) virtual 与 override
    a 定义:子类可以继承父类的方法、不想原封不动的继承父类的方法、而重新做修改的一种方式。
    方法重写也叫方法覆盖。
    b 发生在父类与子类值间
    c 格式:
    public virtual void sayhello()
    {
    //父类 virtual //虚方法
    console.write("程序员");

    }


    public class pe: fulei

    {
    public override void sayhello()
    {

    //重写体 //子类 在子类中重写

    }


    }

    注意:
    fulei dx=new pe();
    dx.ff();
    在内存中运行情况:
    在编译的时候指向父类引用对象、而在运行的时候则指向子类的各个重写的方法。
    相当于没有实现动态之前首先要进行强制转换后才能访问到各个子类的字段,而在实现多太的重写方法之后,代表程序自动帮你生成了这些过程。

    f: 父类中需要重写的方法必须写virtual 否则是个普通方法

    e: 采用多态的好处是扩充强
    例:
    fulei []yinyong =new fulei[3]
    {
    new SE(),
    new PE(),
    new kuaiji();
    //不需要改动总体结构、而只需要添加对象即可
    };
    for (int n=0;n<=fulei.length;n++)
    {
    fulei[n].sayhello.

    }
    2.抽象类
    概念:在父类定义。子类如何实现和父类无关、完全是逻辑组成的一个类。
    注意:
    抽象方法必须位于抽象类之中
    2.如果是抽象方法、类也必须写成抽象类
    public abstract class fulei
    {

    public abstract void sahelloy();
    }
    4.与虚方法比较
    1.抽象类必须要强制重写、而虚方法有选择性的重写。
    2.两者都可以实现多态

    3.开闭原则:
    能在原有的框架内不改动原有的大框架、而增加或者是其他操作功能

    4.多态实现的三个原则:
    1.要有继承
    2.要有父类引用子类对象
    3.要有方法重写 发生在子类与父类之间 在父类与子类中具有同名的返回值类型一样 参数一样

    5.为什么在重写后会自动转到子类中,是因为动态绑定

  • 相关阅读:
    LeetCode题解(14)--Longest Common Prefix
    LeetCode题解(12)--Integer to Roman
    LeetCode题解(13)--Roman to Integer
    LeetCode题解(9)--Palindrome Number
    LeetCode题解(8)--String to Integer (atoi)
    LeetCode题解(7)--Reverse Integer
    LeetCode题解(6)--ZigZag Conversion
    从并发和索引说说innodb和myisam的区别
    thrift基本概念和实例
    fastcgi+lighttpd+c语言 实现搜索输入提示
  • 原文地址:https://www.cnblogs.com/liyiyong/p/5065806.html
Copyright © 2011-2022 走看看