2012-10-02 6 views
9

Tengo una clase que implementa varios métodos abstractos. Cuando extiendo esa clase me sale el siguiente mensaje de error grave:Error: la clase debe declararse abstracta o implementar los métodos restantes

Class CI_Controller_Rest contains 6 abstract methods and must therefore be declared abstract or implement the remaining methods 

La clase con métodos abstractos:

class CI_Controller_Rest extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
    } 

    abstract public function index(); 

    abstract public function get(); 

    abstract public function head(); 

    abstract public function post(); 

    abstract public function put(); 

    abstract public function delete(); 
} 

La clase donde extiendo CI_Controller_Rest:

class Welcome extends CI_Controller_Rest { 

    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() {} 

    public function get() {} 

    public function head() {} 

    public function post() {} 

    public function put() {} 

    public function delete() {} 
} 

Lo que debería hacerlo hacer más que esto?

+3

El error le indican el soution! No hay mucho que agregar ... debe declarar esa clase (CI_Controller_Rest) como abstracta; de lo contrario, debe proporcionar la implementación de esos métodos ... – obe6

+1

@ obe6 ¡oh, claro! ¿Cómo extrañé eso? Pensé que había cambiado CI_Controller_Rest para abstraer. ¡Derecha! – Andrew

Respuesta

20

Si una clase tiene una o más funciones abstractas, it MUST be declared as an abstract class:

abstract class CI_Controller_Rest extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
    } 

    abstract public function index(); 

    abstract public function get(); 

    abstract public function head(); 

    abstract public function post(); 

    abstract public function put(); 

    abstract public function delete(); 
} 
+3

Eh, fuiste más rápido por 10 segundos :) – S3Mi

0
abstract class CI_Controller_Rest extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
    } 

    abstract public function index(); 

    abstract public function get(); 

    abstract public function head(); 

    abstract public function post(); 

    abstract public function put(); 

    abstract public function delete(); 
} 
+11

Por favor, no publiques el código sin una explicación – JvdBerg

0

CI_Controller_Rest debe ser una clase abstracta, ya que contiene métodos abstractos

abstract class CI_Controller_Rest extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
    } 

    abstract public function index(); 

    abstract public function get(); 

    abstract public function head(); 

    abstract public function post(); 

    abstract public function put(); 

    abstract public function delete(); 
} 
Cuestiones relacionadas