PHP,异常类为什么父类可以调用子类方法

子类异常:

class MyException extends Exception{

        public function test(){

                echo 111;

            }

}

try{

    throw new MyException('aaaaaaa');

}catch(Exception $e){

    $e->test();    //经过测试,这句代码居然没问题。Exception类中没有test方法啊,为什么还能调用

}

***********************后添加********************************

有点明白了。

<?php

//父类A

class A{

        protected $_name="php"

}

//子类B

class B extends A{

public function getName(){

        echo $this->_name;

}

}


function a(A $obj){

        echo $obj->getName();

}

a(new B()) ;    

//a()方法的参数类型是A类型,因为B是A的子类,所以可以接受,传递的参数实际上是B对象,所以能够调用B类中的

getName()方法。



王亚松
浏览 1691回答 1
1回答

qq_青枣工作室_0

如果是JAVA,那编译时会出错。但这是PHP,只要实例对象中有这个方法,就可以调用,跟类型无关。而这里,你抛出的实例是new MyException。
打开App,查看更多内容
随时随地看视频慕课网APP