**一.父子类使用过程中,同名方法的参数类型规则:子类的参数类型要包含父类的参数类型** ~~~ class Person{ public function show(int $name){ } } class User extends Person{ public function show($name){ } } ~~~ **二.子类同名方法的参数类型不包含父类方法的参数类型** 1.普通 ~~~ class Foo { public function process(int $item): array{} } class SuperFoo extends Foo{ public function process(string $items): array{} } ~~~ 2.抽象 ~~~ abstract class Person{ abstract function show(int $name); } class User extends Person{ public function show(string $name){ } } ~~~ **三.trait中同名普通方法参数可不同** ~~~ trait Foo { public function inParams(int $item){ } } class SuperFoo{ use Foo; public function inParams(string $items){ } } ~~~ **四.trait中同名抽象方法参数类型必须相同** ~~~ trait Person { abstract function show(int $name); } class User{ use Person; public function show(mixed $name){ } } ~~~