<?php
abstract class abs_db{//抽象类
abstract protected function connect();//数据库连接
abstract protected function select_db();//选择数据库
abstract protected function setchar();//字符设置
abstract protected function query();//查询
abstract protected function getAll(); //取出查询的一部分
abstract protected function getOne();//取出查询的一个
abstract protected function error();
}
class mysql extends abs_db{
}?>以上代码出现报错提示Class 'mysql' must implement inherited abstract method 
 'error(...)'   请问这是什么原因,怎么解决?我用的编译器是zend studio 9.0.3 版本。

解决方案 »

  1.   

    abstract的函数必须在子类实现
      

  2.   

    class mysql extends abs_db{
     protected function connect(){}
     protected function select_db(){}
     protected function setchar(){}
     protected function query(){}
     protected function getAll(){}
     protected function getOne(){}
     protected function error(){}
    }
      

  3.   

    我这没错误
    用abstract定义的类不能被实例化。有一个函数为abstract的类,这个类就必须是abstract,子类必须
    定义所有的父类中的abstract函数,子类中函数的作用域只能被扩大,不能缩小。
      

  4.   

    <?php
    abstract class abs_db{//抽象类
     protected function connect();//数据库连接
     protected function select_db();//选择数据库
     protected function setchar();//字符设置
     protected function query();//查询
     protected function getAll(); //取出查询的一部分
     protected function getOne();//取出查询的一个
     protected function error();
    }
    class mysql extends abs_db{
    }?>
    我改成了这样,就没报错了,但是这样抽象类里边的函数还是抽象函数么?这会影响效果么
      

  5.   

    就是说,一个子类继承一个父类,这个父类是抽象类,那么你在子类的class内,必须把父类中的函数都实现。
    例如:abstract class A{
       funcA();
    }那么你在子类中就得把这个funcA的内容具体写出来B extends A{
        funcA(){
           //具体funcA要做的事情必须得实现出来
        }}