php面向对象知识

介绍面向对象基本知识

<?php 
header("Content-type:text/html;charset=utf-8");//设置字符集

// extends关键字用于说明该类继承自某个父类
// class NbaPlayer extends Human//类继承类
// $jordan = new NbaPlayer();
// $jordan->eat("apple"); // 只要是Human类的子类的对象,就可以调用eat方法
// extends关键字用于说明该类继承自某个父类
class Perfect extends Human{
	public $name="名字";// 定义属性
	public $height="高度";// 定义属性
    protected $weight; // 只有自身和子类可以访问到
    private $age="40"; // private 类型的属性不能被对象外部访问,但是可以在对象内部使用
    
    public static $president="David Stern";
	// 默认的构造函数,在对象被实例化的时候自动调用
    // 构造函数通常用于初始化对象的属性值
	function __construct($name,$height) {
        print "析构函数执行". $name ."\n";
    }

    // 析构函数在该对象不会再被使用的情况下自动调用
    // 析构函数,用于清理程序中使用的系统资源,比如释放打开的文件等等
    function __destruct() {
       print "构造函数执行" . $this->height . "\n";

    }

    public function run() {
        echo "内部函数\n";
    }
    public static function changePresident($newPrsdt){
        static::$president = $newPrsdt; // self用于表示当前类,"::"操作符用于访问类的静态成员
        // static关键字也可以用于访问当前类的静态成员
        // echo $this->age . "\n"; // 不能在静态方法中使用this伪变量,也不能用对象的->方式调用静态成员
        echo parent::$sValue . "\n"; // parent用于表示父类,可以用于访问父类的静态成员
    }
    
}
/**
 * 接口
 * 1. 接口的基本概念和基本使用方法
 * 2. 接口里面的方法没有具体的实现
 * 3. 实现了某个接口的类必须提供接口中定义的方法
 * 4. 不能用接口创建对象,但是能够判断某个对象是否实现了某个接口
 * 5. 接口可以继承接口(interface extends interface)
 * 6. 接口中定义的所有方法都必须是公有,这是接口的特性。
 */
interface ICanEat {
   public function eat($food);
}

/**
 * 抽象类
 * 1. 抽象类允许类里面的部分方法暂时没有具体实现,这些方法我们成为抽象方法
 * 2. 一旦类里面有抽象方法,这个类就必须是抽象类
 * 3. 抽象类跟接口一样,不能直接实例化为对象
 */

// 抽象类前面以abstract关键字开始
abstract class ACanEat {
   // 没有实现的方法需要设定为抽象方法
   // 抽象方法需要在子类中实现 
   abstract public function eat($food);

   public function breath(){
      echo "Breath use the air.\n";
   }
}
// Human类实现了ICanEat接口
class Human extends ACanEat { 
  // 跟Animal类的实现是不同的
  public function eat($food){
    echo "Human eating " . $food . "\n";
  }
}
$a = new Perfect("参数1","参数2");
echo "</br>";
// 调用对象的某个方法使用的语法是->符号,后面跟着方法的名称和一对括号
$a->run();


猜你喜欢

转载自blog.csdn.net/qq_39940866/article/details/78316221