一、
1
2
3
- abstract
class A - {
-
-
protected $value1 = 0; -
private $value2 = 1; -
public $value3 = 2; -
-
public function my_print() -
{ -
echo "hello,world/n"; -
} -
-
abstract protected function abstract_func1(); -
abstract protected function abstract_func2(); - }
- abstract
class B extends A - {
-
public function abstract_func1() -
{ -
echo "implement the abstract_func1 in class A/n"; -
} -
-
//abstract protected function abstract_func2(); - }
- class
C extends B - {
-
public function abstract_func2() -
{ -
echo "implement the abstract_func2 in class A/n"; -
} - }
4
那么程序将出现以下错误:
- Fatal
error: Class B contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (A::abstract_func)
5
(1)
(2)
(3)
二、
1
2
- interface
iA - {
-
const AVAR=3; -
public function iAfunc1(); -
public function iAfunc2(); - }
- echo
iA:: AVAR;
3
- class
E implements iA - {
-
public function iAfunc1(){echo "in iAfunc1";} -
public function iAfunc2(){echo "in iAfunc2";} - }
否则该类必须声明为
4
- interface
iB - {
-
public function iBfunc1(); -
public function iBfunc2(); - }
- class
D extends A implements iA,iB - {
-
public function abstract_func1() -
{ -
echo "implement the abstract_func1 in class A/n"; -
} -
public function abstract_func2() -
{ -
echo "implement the abstract_func2 in class A/n"; -
} -
public function iAfunc1(){echo "in iAfunc1";} -
public function iAfunc2(){echo "in iAfunc2";} -
public function iBfunc1(){echo "in iBfunc1";} -
public function iBfunc2(){echo "in iBfunc2";} - }
-
- class
D extends B implements iA,iB - {
-
public function abstract_func1() -
{ -
parent::abstract_func1(); -
echo "override the abstract_func1 in class A/n"; -
} -
public function abstract_func2() -
{ -
echo "implement the abstract_func2 in class A/n"; -
} -
public function iAfunc1(){echo "in iAfunc1";} -
public function iAfunc2(){echo "in iAfunc2";} -
public function iBfunc1(){echo "in iBfunc1";} -
public function iBfunc2(){echo "in iBfunc2";} - }
5
- interface
iC extends iA,iB{} - class
F implements iC - {
-
public function iAfunc1(){echo "in iAfunc1";} -
public function iAfunc2(){echo "in iAfunc2";} -
public function iBfunc1(){echo "in iBfunc1";} -
public function iBfunc2(){echo "in iBfunc2";} - }
三、
1.
(1)
(2)
2.
(1)
(2)
(3)
(4)
(5)
(6)
(7)
3.interface
(1)
(2)
(3)
(4)
4. abstractclass
一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。最常见的有:
(1)
(2)
(3)