天氣:晴 微熱
1.抽象類只要方法中帶有abstract 類前就要加abstract,類中至少有一個抽象方法
2.抽象類中的寫法區(qū)別function asd();省去大括號
abstract class class1{
#抽象方法
abstract function fun1();
……
}
3.不能被實例化,只能被繼承
4.繼承的派生類當中要把所有抽象方法重載才能實例化
class class2 extends class1{
function fun1(){
}
}
5.fun的嚴格程度不能超過父類中定義的,如父類中定義為 protected 子類中只能為public和protected不可為private
二讼油、接口類
// 聲明一個'iTemplate'接口
interface iTemplate
{
public function setVariable(var);
public function getHtml($template);
}
// 實現(xiàn)接口
class Template implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
public function getHtml($template)
{
foreach($this->vars as $name => $value) {
$template = str_replace('{' . $name . '}', $value, $template);
}
return $template;
}
}
a=
a;
var_dump($test);
abstract和interface兩者不同點
1.interface 中的每一個方法都是抽象方法九火,都只是聲明的 (declaration, 沒有方法體 ) ,實現(xiàn)類必須要實現(xiàn)佃却。而 abstract class 中并非所有的方法都是抽象的,只有那些冠有 abstract 的方法才是抽象的窘俺,子類必須實現(xiàn)双霍。
2.一個類可以實現(xiàn)多個 interface ,但一個類只能繼承一個 abstract class 批销。
3.接口中的抽象方法只能是 public 的洒闸,不能用 private , protected 修飾符修飾均芽。而抽象類中的抽象方法則可以用 public 丘逸, protected 來修飾,但不能用 private 掀宋。
//接口可以多重繼承接口深纲,接口不能繼承類
interface ia{
function a();
}
interface ib{
function b();
}
interface ic extends ia,ib{
function c();
}
class B{
function BB(){
}
}
//繼承父類又實現(xiàn)接口
class A extends B implements ic{
function a(){
}
function b(){
}
function c(){
}
}