第十节摘要法和抽象类10
抽象方法是一种一般的方法,作为占位符中的子类(占地方不工作),它与一般方法不同没有任何代码。如果类有一个或多个抽象方法,则该类成为抽象类。不能实例化抽象类。您必须继承它们,然后实例化子类。您也可以将抽象类作为模板的子类。
如果重写所有抽象方法,子类将变成一个普通类。如果没有重写所有方法,子类仍然是抽象的。如果一个类包含抽象方法(甚至只有一个),则必须声明这个类是抽象的、抽象的。在类关键字前加
不同的语法和方法声明方法的一般语句。抽象方法不包含在一般的方法,在用形象的主要部分,并用分号来结束。
在例子6.13中,我们定义了一个类的形状。含有getArea方法而是因为他们不知道它的形状是不可能确定图形的面积,确良我们声明为抽象方法getArea方法。您不能实例化一个形状对象,但您可以继承它,或者在表达式中使用它。如示例6.13。
如果只构建类的抽象方法,则可以定义接口(接口)。为了说明这一点,接口和实现关键字PHP。可以使用接口来替换抽象类,使用工具而不是扩展来说明类定义或使用接口。例如,你可以写一个MyClass实现myiterface。这两种方法可以根据个人喜好进行选择。
附注:
两种手段:
1。抽象类AAA(注意AAA中只有抽象方法,没有一般方法)
BBB级延伸AAA {}(覆盖在AAA BBB抽象方法)
2。接口AAA { }
Class BBB implements aaa{} (overwriting an abstract method in AAA in BBB)
* /
清单6.13抽象类
抽象根类抽象根类
抽象类
{
抽象函数GetArea();文件: / /定义一个抽象方法
}
抽象子类抽象子类
抽象类多边形扩展形状文件:多边形
{
摘要getnumberofsides()函数;
}
具体类实体类三角形类
类三角形延伸多边形
{
公共基础;
公共高度;
公共函数GetArea()文件: / /覆盖面积计算方法
{
返回((($)…))2;
}
覆盖公共功能getnumberofsides边数的统计方法()文件: / /
{
返回(3);
}
}
具体的类实体类
类矩形扩展多边形
{
公共宽度;
公共高度;
公共函数GetArea()
{
返回($ >宽度* $ - >高度);
}
公共功能getnumberofsides()
{
返回(4);
}
}
具体类实体类循环
类圆扩展形状
{
公共半径;
公共函数GetArea()
{
返回(pi);
}
}
具体的根类定义了一个颜色类。
类的颜色
{
公开名称;
}
我的收藏美元=阵列();文件: / /建立一套形状放在一个数组
创建一个矩形
新矩形;
$ =宽度= 5;
$ =高度= 7;
我的收藏美元{ } = r;
unset(r);
创建三角形
新三角形;
$ =基础= 4;
$ =高度= 5;
我的收藏美元{ } = $ T;
设置(T);
创建一个圆
新圆;
$ =半径= 3;
我的收藏{ } = $ C $;
unset($ C);
创建颜色
新颜色;
$name蓝色;
我的收藏{ } = $ C $;
unset($ C);
foreach(合我的美元)
{
如果(合的是形状)文件: / /如果的是形状类的一个实例
{
打印()区域:。$ S -> GetArea()。
;
}
如果($ S是多边形)
{
打印(边:)。
$ S -> getnumberofsides()。
;
}
如果(合的是颜色)
{
打印(颜色
;
}
打印()
;
}
>