PHP 오버로딩
클래스에 있는 메소드는 다른 메소드와 이름은 같지만 매개변수가 다릅니다. 호출되는 메소드는 오버로드된 메소드입니다.
안타깝게도 PHP는 약한 유형의 언어이기 때문에 메소드 자체의 매개변수가 다양한 유형의 데이터를 수신할 수 있고, PHP 메소드는 무한정 개수의 매개변수를 수신할 수 있기 때문에 엄격한 메소드 오버로딩 감각이 없습니다. .
PHP에서 오버로딩이란 하위 클래스의 상위 클래스와 동일한 이름의 메서드를 정의하는 것을 의미하며, 이 메서드는 하위 클래스의 상위 클래스의 메서드를 재정의합니다.
하위 클래스에서는 상위 클래스에서 상속된 메서드가 하위 클래스에서 정의한 속성이나 메서드에 액세스하지 못할 수 있으므로 오버로드가 필요한 경우가 있습니다.
예:
<?php class Person { var $name; var $age; function say() { echo "我的名字叫:".$this->name."<br />"; echo "我的年龄是:".$this->age; } } // 类的继承 class Student extends Person { var $school; //学生所在学校的属性 function say() { echo "我的名字叫:".$this->name."<br />"; echo "我的年龄是:".$this->age."<br />"; echo "我正在".$this->school."学习"; } } $t1 = new Student(); $t1->name = "张三"; $t1->age = "18"; $t1->school = "人民大学"; $t1->say(); ?> 运行该例子,输出: 我的名子叫:张三 我的年龄是:18 我正在人民大学学习 提示 如果父类定义方法时使用了 final 关键字,则不允许被子类方法覆盖。 访问父类被覆盖的方法 可以通过 :: 符号来访问父类被覆盖的方法或成员属性: function say() { parent::say(); //或者 Person::say(); echo "我在".$this->school."上学<br />";