php抽象类就是使用关键字abstract修饰的类就成为了抽象类;抽象类不能被实例化,只能被继承;如果类方法被声明为抽象的,那么其中就不能包括具体的功能实现。
php抽象类就是使用关键字abstract修饰的类就成为了抽象类;抽象类不能被实例化,只能被继承;如果类方法被声明为抽象的,那么其中就不能包括具体的功能实现。
abstract class Demo{
}
其使用了关键字abstract修饰的Demo类就成为了抽象类。 抽象类Demo不能被实例化 抽象类错误使用如下
abstract class Demo{
}
new Demo;
Fatal error: Cannot instantiate abstract class Demoin /demo.php on line 5
抽象类正确使用如下
抽象类只能被继承,类DemoOne继承抽象类Demo。
abstract class Demo{
// TODO
}
class DemoOne extends Demo
{
// TODO
}
new DemoOne; 抽象类主要用来规范一些类的共同特性,需要这些规范的类就继承这个抽象类。
一些类有共同的特性a、b、c,那么这些特性在抽象类Demo中定义为抽象方法,这些类都继承Demo这个抽象类。继承一个抽象类的时候,子类必须实现抽象类中的所有抽象方法。
<?php
abstract class Demo{
abstract function a();
abstract function b();
abstract function c($params);
// 普通方法(非抽象方法)
public function hello($params = []) {
print $this->a();
print $this->b();
print $this->c($params);
}
}
class DemoOne extends Demo
{
public function a() {
// TODO
}
public function b() {
// TODO
}
public function c($params) {
var_dump($params);
}
}
class DemoTwo extends Demo
{
public function a() {
// TODO
}
public function b() {
// TODO
}
public function c($params) {
var_dump($params);
}
}
$demo_one = new DemoOne;
$demo_one->hello(['name'=>'demoOne']);
$demo_two = new DemoTwo;
$demo_one->hello(['name'=>'demoTwo']);
DemoOne类和DemoTwo类有共同的特性a、b、c,所有用抽象类Demo来进行规范。
抽象类Demo中可以定义非抽象方法hello。
array(1) {
["name"]=>
string(7) "demoOne"
}
array(1) {
["name"]=>
string(7) "demoTwo"
}
转载注明:
感谢博主,喝杯咖啡~
感谢博主,喝杯咖啡~
还没有人发表评论