7.7.1 PHP常見的關(guān)鍵字
instanceof關(guān)鍵字
final關(guān)鍵字的應(yīng)用
static關(guān)鍵字的使用
const關(guān)鍵字
instanceof關(guān)鍵字
“instanceof”操作符用于檢測當(dāng)前對(duì)象實(shí)例是否屬于某一個(gè)類的類型。
<?php
class Person{ ... ... }
class Student extends Person{ ... ... }
$p=new Person();
$s=new Student();
echo $p instanceof Student; //結(jié)果為false
echo $s instanceof Student ; //結(jié)果為true
echo $s instanceof Person; //結(jié)果為true
final關(guān)鍵字的應(yīng)用
在PHP5中新增加了final關(guān)鍵字,它只能用來修飾類和方法,不能使用final這個(gè)關(guān)鍵字來修飾成員屬性,因?yàn)閒inal是常量的意思,我們在PHP里定義常量使用的是define()函數(shù)和const關(guān)鍵字,所以不能使用final來定義成員屬性。
final的特性:
使用final關(guān)鍵字標(biāo)識(shí)的類不能被繼承;
使用final關(guān)鍵字標(biāo)識(shí)的方法不能被子類覆蓋(重寫),是最終版本;
目的:一是為了安全,二是沒有必要
1.php
<?php
/*
*
*/
class Person {
public $name;
protected $age;
protected $sex;
function __construct($name, $age, $sex) {
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
public function say() {
echo "我的名子是:{$this->name},我的年齡是:{$this->age},我的性別是:{$this->sex}。<br>";
}
function eat() {
echo "11111111111111<br>";
}
function run() {
}
}
class Student extends Person{
var $school;
function __construct($name, $age, $sex, $school) {
parent::__construct($name, $age, $sex);
$this->school = $school;
}
function study() {
}
function say() {
parent::say();
echo "我所在的學(xué)校:{$this->school}<br>";
}
}
class Hello {
}
$p = new Person("高洛峰", 30, "男");
$s = new Student("妹子", 20, "女", "兄弟連");
if($s instanceof Person) {
echo "這個(gè)\$s是Person類的對(duì)象";
} else {
echo "對(duì)象不屬于這個(gè)類";
}
// $s = new Student("妹子", 20, "女", "兄弟連");
// $s -> say();
2.php
<?php
/*
*
*/
final class Person {
public $name;
protected $age;
protected $sex;
function __construct($name, $age, $sex) {
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
public function say() {
echo "我的名子是:{$this->name},我的年齡是:{$this->age},我的性別是:{$this->sex}。<br>";
}
function eat() {
echo "11111111111111<br>";
}
function run() {
}
}
class Student extends Person{
var $school;
function __construct($name, $age, $sex, $school) {
parent::__construct($name, $age, $sex);
$this->school = $school;
}
function study() {
}
function say() {
parent::say();
echo "我所在的學(xué)校:{$this->school}<br>";
}
}
/*
*
* 在PHP中final不定義常量, 所以就不會(huì)使用,也不能使用final來修飾成員屬性
*
*
* 1. final可以修飾類 --- 這個(gè)類不能去擴(kuò)展, 不能有子類 (不讓別人去擴(kuò)展, 這個(gè)類是最終的類時(shí))
*
* 2. final可以修飾方法
*
*/
$s = new Student("妹子", 20, "女", "兄弟連");
$s -> say();
3.php
<?php
/*
*
*/
class Person {
public $name;
protected $age;
protected $sex;
function __construct($name, $age, $sex) {
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
public final function say() {
echo "我的名子是:{$this->name},我的年齡是:{$this->age},我的性別是:{$this->sex}。<br>";
}
function eat() {
echo "11111111111111<br>";
}
function run() {
}
}
class Student extends Person{
var $school;
function __construct($name, $age, $sex, $school) {
parent::__construct($name, $age, $sex);
$this->school = $school;
}
function study() {
}
function say() {
parent::say();
echo "我所在的學(xué)校:{$this->school}<br>";
}
}
/*
*
* 在PHP中final不定義常量, 所以就不會(huì)使用,也不能使用final來修飾成員屬性
*
*
* 1. final可以修飾類 --- 這個(gè)類不能去擴(kuò)展, 不能有子類 (不讓別人去擴(kuò)展, 這個(gè)類是最終的類時(shí))
*
* 2. final可以修飾方法 --- 這個(gè)方法,就不能在子類中覆蓋(不讓子類去改這個(gè)方法, 或擴(kuò)展這個(gè)方法的功能時(shí), 這個(gè)方法也就時(shí)最終的方法)
*
*/
$s = new Student("妹子", 20, "女", "兄弟連");
$s -> say();
test.php
<?php
/*
*
*/
class Person {
public $name;
protected $age;
protected $sex;
function __construct($name, $age, $sex) {
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
public function say() {
echo "我的名子是:{$this->name},我的年齡是:{$this->age},我的性別是:{$this->sex}。<br>";
}
function eat() {
echo "11111111111111<br>";
}
function run() {
}
}
class Student extends Person{
var $school;
function __construct($name, $age, $sex, $school) {
parent::__construct($name, $age, $sex);
$this->school = $school;
}
function study() {
}
function say() {
parent::say();
echo "我所在的學(xué)校:{$this->school}<br>";
}
}
/*
*
* 在PHP中final不定義常量, 所以就不會(huì)使用,也不能使用final來修飾成員屬性
*
*
* 1. final可以修飾類 --- 這個(gè)類不能去擴(kuò)展, 不能有子類 (不讓別人去擴(kuò)展, 這個(gè)類是最終的類時(shí))
*
* 2. final可以修飾方法 --- 這個(gè)方法,就不能在子類中覆蓋(不讓子類去改這個(gè)方法, 或擴(kuò)展這個(gè)方法的功能時(shí), 這個(gè)方法也就時(shí)最終的方法)
*
*/
$s = new Student("妹子", 20, "女", "兄弟連");
$s -> say();