13*继承、方法重写与构造方法

继承

  • 使用关键字 extends 来继承一个类,PHP 不支持多继承
  • 语法:class Child extends Parent { // 代码部分 }
  • 实例:
<?php
	class Site {
		// 成员变量
		var $url;
		var $title;

		//成员函数
		function setUrl($par){
				$this->url = $par;  //变量 $this 代表自身的对象
			}

		function getUrl(){
	     		echo $this->url;
	     		echo "<br>";
	  		}

	  	function setTitle($par){
	  			$this->title = $par;
	  		}

	  	function getTtile(){
	  			echo $this->title;
	  			echo "<br>";
	  		}
	}

	//继承
	class Child_Site extend Site{
		 var $category;

	    function setCate($par){
	        $this->category = $par;
	    }
	  
	    function getCate(){
	        echo $this->category . PHP_EOL; //PHP_EOL 换行符
	    }
	}

?>

方法重写

  • 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
  • 实例:
<?php
	class Site {
		// 成员变量
		var $url;
		var $title;

		//成员函数
		function setUrl($par){
				$this->url = $par;  //变量 $this 代表自身的对象
			}

		function getUrl(){
	     		echo $this->url;
	     		echo "<br>";
	  		}

	  	function setTitle($par){
	  			$this->title = $par;
	  		}

	  	function getTtile(){
	  			echo $this->title;
	  			echo "<br>";
	  		}
	}

	//继承
	class Child_Site extend Site{

		// 覆盖写
		function getTtile(){

		}

		function setTitle(){

		}
	}

?>

调用父类构造方法

  • PHP 不会在子类的构造方法中自动的调用父类的构造方法
  • 要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct()
  • 实例:
<?php
class BaseClass {
	   function __construct() {
	       print "BaseClass 类中构造方法" . PHP_EOL;
	   }
	}
	class SubClass extends BaseClass {
	   function __construct() {
	       parent::__construct();  // 子类构造方法不能自动调用父类的构造方法
	       print "SubClass 类中构造方法" . PHP_EOL;
	   }
	}
	class OtherSubClass extends BaseClass {
	    // 继承 BaseClass 的构造方法
	}

	// 调用 BaseClass 构造方法
	$obj = new BaseClass();

	// 调用 BaseClass、SubClass 构造方法
	$obj = new SubClass();

	// 调用 BaseClass 构造方法
	$obj = new OtherSubClass();
?>

运行截图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值