PHP細碎基礎知識總結-----面向對象篇

1.常量的定義:

在類內部

const $PI=3.14;

調用:類內部 self::$PI

類外部:類名::$PI;

外部

define("PI",3.14);

2.static靜態屬性

作用:定義靜態變量,靜態變量的範圍是整個主函數,所以相當於全局變量,而在類中以static聲明的變量不屬於任何具體對象,而是屬於整個類的公共變量;在類中,靜態方法不用創建具體對象就可以直接調用。

類內部靜態變量的創建:

public static $a=15;

調用:

內部:注意,不能用$this,因爲this是調用當前對象的,而static變量則屬於類的,屬於具體的對象,應該用self::$a,靜態方法在內部用self::方法名();

在類外,類名::$a,靜態方法的調用:類名::方法名()

3.抽象類

使用abstract修飾的類稱爲抽象類

關於抽象類

1.不能被實例化

2.子類要麼實現抽象方法,不實現也變成抽象類

3.抽象類中可以包含非抽象方法

4.抽象類的作用:爲子類提供規範,限制實例化

例子:

<?php  
abstract class Animal
{
	
	abstract function cry();
	function eat(){
		echo "我吃什麼?";
	}
}
class Cat extends Animal{
	function cry(){
		echo "喵喵";
	}
}
$cat=new Cat();
$cat->cry();
?>

4.接口 

聲明:interface

實現:implements

關於接口:

1.爲什麼會有接口?

接口的存在是爲了子類提供規範,也可以在一定程度上解決PHP不能多繼承的問題。

2.接口使用的一些規則:

1)接口不能實例化

2)接口中所有的方法必須是抽象方法,但不用abstract修飾

3)接口中不能有變量屬性,只能用常量

4)接口之間可以實現多繼承,用逗號隔開

5.trait

作用:模擬多繼承問題

優先級問題:

在有相同方法名的是,當前類的方法會覆蓋trait方法,trait方法會覆蓋父類方法

例子:

<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}

class MyHelloWorld extends Base {
    use SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
?>

結果輸出:

hello world

命名空間

定義:

namespace test;

使用:

use test as myplace;

注:在實際編程中,不建議在一個文件中使用多個命名空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章