2019-08-21 面向对象之abstract类笔记

天气:晴 微热
1.抽象类只要方法中带有abstract 类前就要加abstract,类中至少有一个抽象方法
2.抽象类中的写法区别function asd();省去大括号
abstract class class1{
#抽象方法
abstract function fun1();
……
}
3.不能被实例化,只能被继承
4.继承的派生类当中要把所有抽象方法重载才能实例化

class class2 extends class1{
function fun1(){
}
}
5.fun的严格程度不能超过父类中定义的,如父类中定义为 protected 子类中只能为public和protected不可为private

二、接口类
// 声明一个'iTemplate'接口
interface iTemplate
{
public function setVariable(name,var);
public function getHtml($template);
}

// 实现接口
class Template implements iTemplate
{
private $vars = array();

public function setVariable($name, $var)
{
    $this->vars[$name] = $var;
}

public function getHtml($template)
{
    foreach($this->vars as $name => $value) {
        $template = str_replace('{' . $name . '}', $value, $template);
    }

    return $template;
}

}

test=new Template();a=test->setVariable("name", "jack"); echoa;
var_dump($test);

abstract和interface两者不同点
1.interface 中的每一个方法都是抽象方法,都只是声明的 (declaration, 没有方法体 ) ,实现类必须要实现。而 abstract class 中并非所有的方法都是抽象的,只有那些冠有 abstract 的方法才是抽象的,子类必须实现。
2.一个类可以实现多个 interface ,但一个类只能继承一个 abstract class 。
3.接口中的抽象方法只能是 public 的,不能用 private , protected 修饰符修饰。而抽象类中的抽象方法则可以用 public , protected 来修饰,但不能用 private 。

//接口可以多重继承接口,接口不能继承类
interface ia{
function a();
}
interface ib{
function b();
}
interface ic extends ia,ib{
function c();
}
class B{
function BB(){
}
}
//继承父类又实现接口
class A extends B implements ic{
function a(){
}
function b(){
}
function c(){
}
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容