• 多态


    多态
    概念:让一个对象能够表现出多种状态(类型)
    实现多态的3种手段:1、虚方法2、抽象类3、接口
    1、虚方法
    步骤:1)首先把父类的方法标记为虚方法:使用关键字virtaul,这个函数可以被子类重新写一遍。子类函数前写override

    2)抽象类
    如果父类中的方法不知道如何去实现时可以把它写成抽象类,方法写成抽象方法,用关键字abstract,抽象方法不能有任何实现。
    a抽象成员必须标记为abstract,并且不能有任何实现。
    b抽象成员必须在抽象类中。
    c抽象类不能被实例化
    除非子类也是一个抽象类,则可以不重写
    d抽象成员的访问修饰符不能是private
    e在抽象类中可以包含实例成员。并且抽象类的实例成员可以不被子类实现。
    f抽象类是有构造函数的。虽然不能被实例化。
    g如果父类的抽象方法中有参数,那么。继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数,如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候也必须要传入返回值。
    =====
    如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑父类定义成一个普通类,用虚方法来实现。
    如果父类中的方法没有默认实现,父类也不需要被实例化,则可以交该类定义为抽象类。

    //使用多态求矩形的面积和周长以及圆形的面积和周长。
    Shape shape=new Circle(5);
    shape.GetArea();
    shape.GetPerimeter();
    public abstract class Shape
    {
    public abstract double GetArea();
    public abstract double GetPerimeter();
    }
    public calss Circle:shape
    {
    public Circle(double r)
    {
    this.R=r;
    }
    private double _r;
    public double R
    {
    get{return _r;}
    set{_r=value;}
    }
    public override double GetArea()
    {
    return Math.PI*this.R*this.R;
    }
    public override double GetPerimeter()
    {
    return 2*Math.PI*this.R;
    }
    }

  • 相关阅读:
    谈屡面屡胜的面试经验
    同步异步和阻塞非阻塞的区别
    Ansible条件测试
    Ansible playbook基础组件介绍
    Ansible的基础元素和YAML介绍
    Ansible常见模块介绍
    Ansible介绍及安装部署
    Spark介绍及安装部署
    安装部署Apache Hadoop (完全分布式模式并且实现NameNode HA和ResourceManager HA)
    安装部署Apache Hadoop (本地模式和伪分布式)
  • 原文地址:https://www.cnblogs.com/iceberg2008/p/4133961.html
Copyright © 2020-2023  润新知