抽象 class 和抽象函数有什么区别
what is difference between abstract class and abstract function
我知道如果我创建一个abstract
class,那么我不能创建它的一个实例,它将只是一个基本的class (将其扩展到其他 classes)。现在我想知道什么是 abstract
功能? (或者还有abstract
属性?)
我在 abstract
class 中看到一个没有定义的函数(也是抽象函数),为什么?像这样:
Abstract class test{
Abstract function index();
}
抽象函数是尚未实现的函数。抽象函数的实现必须在inherited classes.
中完成
具有抽象函数的class必须是抽象的class。
抽象函数允许您在抽象中编写算法 class 而无需定义所有子函数(声明为抽象),因为这些子函数可能依赖于具体继承的上下文 class es.
无法实例化抽象 class。假设您有:
Abstract class People {
}
你做不到$people = new People();
您需要扩展它才能实例化它,例如:
class Man extends People {
}
$people = new Man();
关于抽象方法,它们只包含抽象中的方法签名 class 并且它们必须在子 classes 中实现。
Abstract class People {
abstract public function getAge();
}
class Man extends People {
public function getAge() {
//Blah Blah
}
}
发件人:http://php.net/manual/en/language.oop5.abstract.php
PHP 5 introduces abstract classes and methods. Classes defined as
abstract may not be instantiated, and any class that contains at least
one abstract method must also be abstract. Methods defined as abstract
simply declare the method's signature - they cannot define the
implementation.
我知道如果我创建一个abstract
class,那么我不能创建它的一个实例,它将只是一个基本的class (将其扩展到其他 classes)。现在我想知道什么是 abstract
功能? (或者还有abstract
属性?)
我在 abstract
class 中看到一个没有定义的函数(也是抽象函数),为什么?像这样:
Abstract class test{
Abstract function index();
}
抽象函数是尚未实现的函数。抽象函数的实现必须在inherited classes.
中完成具有抽象函数的class必须是抽象的class。
抽象函数允许您在抽象中编写算法 class 而无需定义所有子函数(声明为抽象),因为这些子函数可能依赖于具体继承的上下文 class es.
无法实例化抽象 class。假设您有:
Abstract class People {
}
你做不到$people = new People();
您需要扩展它才能实例化它,例如:
class Man extends People {
}
$people = new Man();
关于抽象方法,它们只包含抽象中的方法签名 class 并且它们必须在子 classes 中实现。
Abstract class People {
abstract public function getAge();
}
class Man extends People {
public function getAge() {
//Blah Blah
}
}
发件人:http://php.net/manual/en/language.oop5.abstract.php
PHP 5 introduces abstract classes and methods. Classes defined as abstract may not be instantiated, and any class that contains at least one abstract method must also be abstract. Methods defined as abstract simply declare the method's signature - they cannot define the implementation.