woiduensy 2016-08-03 13:39 采纳率: 66.7%
浏览 1092
已采纳

学习遇到困难,面向对象不能理解三大概念怎么办?

    如何理解面向对象的三大要素,封装,堕胎和继承?          
  • 写回答

2条回答 默认 最新

  • devmiao 2016-08-03 13:40
    关注

    在面向对象语言中,接口的多种不同的实现方式即为多态。

    多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性。

    多态案例一:

    复制代码
    class employee{//定义员工父类
    protected function working(){//定义员工工作,需要在子类的实现
    echo "本方法需要在子类中重载!";
    }

    }

    class painter extends employee{//定义油漆工类
    public function working(){//实现继承的工作方法
    echo "油漆工正在刷漆!\n";
    }
    }

    class typist extends employee{//定义打字员类
    public function working(){
    echo "打字员正在打字!\n";
    }
    }

    class manager extends employee{//定义经理类
    public function working(){
    echo "经理正在开会!";
    }
    }

    function printworking($obj){//定义处理方法
    if($obj instanceof employee){//若是员工对象,则显示其工作状态
    $obj->working();
    }else{//否则显示错误信息
    echo "Error: 对象错误!";
    }
    }

    printworking(new painter());//显示油漆工的工作
    printworking(new typist());//显示打字员的工作
    printworking(new manager());//显示经理的工作
    复制代码
    多态案例二:

    复制代码
    <?php
    //定义一个形状的接口,里面有两个抽象方法让子类去实现
    interface Shape{
    function area();
    function perimeter();
    }
    //定义一个矩形子类实现形状接口中的周长和面积
    class Rect implements Shape{
    private $width;
    private $height;
    function __construct($width,$height){
    $this->width = $width;
    $this->height = $height;
    }
    function area(){
    return "矩形的面积为:".($this->width*$this->height);
    }
    function perimeter(){
    return "矩形的周长为:".(2*($this->width+$this->height));
    }
    }
    class Circular implements Shape{
    private $radius;
    function __construct($radius) {
    $this->radius=$radius;
    }
    function area(){
    return "圆形的面积是:".(3.14*$this->radius*$this->radius);

    }
    function perimeter(){
        return "圆形的周长是:".(2*3.14*$this->radius);
    }
    

    }
    function printcontent($obj){
    if($obj instanceof Shape){
    echo $obj->area()."
    ";
    echo $obj->perimeter()."
    ";

    }else{
        echo "Error:对象错误!";
    }
    

    }
    printcontent(new Circular(4));
    printcontent(new Rect(3,5));

    ?>
    复制代码
    多态的实现可以通过继承父类,或是继承接口来实现。

    继承父类时,要重载其中的方法。继承接口时,要根据具体的需要,改写抽象方法。

    instanceof用来检测一个给定的对象是否属于(继承于)某个类(class)、某个类的子类、某个接口(interface)。如果是则返回true。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog