问题
比如,在一个图形编辑软件的分析设计过程中,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域并不是直接存在的,它就是一个抽象概念。
抽象类
- 使用abstract关键字来实现。
- 如果一个类被abstract来修饰,则该类就是抽象类;如果一个方法被abstract来修饰,则该方法就是抽象方法。
- 抽象类不能实例化。因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
- 抽象类可以没有抽象方法。
- 一个类中只要有抽象方法,则该类必须声明为抽象类。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
//正确:abstract class Animal{
class Animal{
abstract public function cry($Cry);
}
class Dog extends Animal{
public function cry($dogCry){
echo $dogCry."<br/>";
}
}
$dog=new Dog();
$dog->cry("汪汪");
?>
</body>
</html>
- 如果一个类(A)继承了一个抽象类(B),则要求A实现从B继承来的所有抽象方法。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
abstract class Animal{
abstract public function cry($Cry);
}
class Dog extends Animal{
/*public function cry($dogCry){
echo $dogCry."<br/>";
}*/
}
$dog=new Dog();
$dog->cry("汪汪");
?>
</body>
</html>
- 基本语法
abstract class 类名{
abstract 修饰符 function 函数名(参数列表);
}
- 简单案例
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<?php
abstract class Animal{
abstract public function cry($Cry);
}
class Dog extends Animal{
public function cry($dogCry){
echo $dogCry."<br/>";
}
}
$dog=new Dog();
$dog->cry("汪汪");
?>
</body>
</html>