Duvida relativa a Herança, abstraçao

Bom dia,
Tenho uma classe usuario, e uma subclasse cliente,

Na classe usuario, com a qual preciso somente efetuar cadastro e alterar, da mesma forma que na cliente também possui metodos cadastro e alterar com suas peculiaridades,
penso da seguinte maneira, se cliente herda de usuario, logo cliente tem acesso aos metodos de usuario,
porem nao é bem o que esta acontecendo…
Como nao preciso de instanciar a classe usuario para referenciar seus metodos visto que cliente os acessa, a defini como abstrata,
para tanto, executava e funcionava , nao corretamente, mas sem erros tanto do codigo quando da SQL, então li mais um pouco, e descrubri que para um metodo estar sempre disponivel independente da intancia tem de estar declarado como static , então coloquei static no metodo, e…, erro, e nao sei mais como fazer, sim me falta conhecimento de o.o, mas estou lendo muito a respeito, entretanto ainda está um pouco vago este conceito.

é isso ai quem puder me ajudar a organizar esses conceitos, fico muito agradecido ^^,

Você está extendendo a classe Usuario? Veja:

abstract class Usuario {

    abstract void cadastrar();

    abstract void alterar();
}
class Cliente extends Usuario { // Herança

    @Override // Anotação que indica sobrescrita. Não é obrigatória, mas constitui boa prática.
    void cadastrar() {
        // Implementação
    }

    @Override
    void alterar() {
        // Implementação
    }
}

Cara, posta seu código aí. Acho que fica mais fácil agente localizar possivel erros ou te aconselhar.
Mas isso que o nosso amigo disse acima, se encaixa bem com que você descreveu.

[code]abstract class Usuario {
private $idUsuario;
private $nome;
private $cpf;
private $email;
private $senha;

            public static function cadastrarUsuario(){
		$conexao = conexaoBanco();
		$sql = "INSERT INTO Usuario (nome, cpf, email, senha, Cidade_idCidade)
				VALUES ('$this->nome','$this->cpf','$this->email','$this->senha', 1)";					
		mysql_query($sql,$conexao);// or die mysql_error() ;
		mysql_close($conexao);
	}
            
             //... getters setters

            public static function setNome ($nome){
		$this->nome = $nome;
	}
	
	public static function setCPF ($cpf){
		$this->cpf = $cpf;
	}
	
	public static function setEmail ($email){
		$this->email = $email;
	}
	
	public static function setSenha ($senha){
		$this->senha = $senha;
	}

}

//sub classe

class Cliente extends Usuario{

	private $sexo;
	private $endereco;
	private $cep;
	private $dataNascimento;
	private $cidade;
	private $estado;
	private $ultimaCompra;
	
	public function Cliente (){
		
		$conexao = conexaoBanco();	

                    $sql = "SELECT i.nome, i.cpf, i.email, i.senha, u.sexo, u.endereco, u.cep, u.dataNascimento, c.nome, e.nome
				FROM ((	Cliente u INNER JOIN Cidade c ON u.usuario_idusuario = c.idCidade)
				INNER JOIN Estado e ON u.usuario_idusuario = e.idEstado	)
				INNER JOIN Usuario i ON u.usuario_idUsuario = i.idUsuario
				WHERE u.usuario_idUsuario = ".$_SESSION[id];
				
		if(mysql_query($sql,$conexao)){
			$valor = mysql_fetch_array($retorno);
			
			$this->setIdCliente ();
			$this->setSexo ($valor[sexo]);
			$this->setEndereco ($valor[endereco]);
			$this->setCEP ($valor[cep]);
			$this->setDataNascimento ($valor[dataNascimento]);
			$this->setCidade ($valor[cidade]);
			$this->setEstado ($valor[estado]);
			$this->setNome($valor[nome]);
			$this->setCPF($valor[cpf]);
			$this->setEmail($valor[email]);
			$this->setSenha($valor[senha]);
                            mysql_close($conexao);
                      }else{
                            $this->setSexo (null);
			$this->setEndereco (null);
			$this->setCEP (null);
			$this->setDataNascimento (null);
			$this->setCidade (null);
			$this->setEstado (null);
                      }
       }

        public function cadastrarUsuario (){
		$conexao = conexaoBanco();			
		$sql = "INSERT INTO Cliente (usuario_idUsuario, sexo, endereco, CEP, dataNascimento) 
				VALUES ($this->idCliente,'$this->sexo','$this->endereco',$this->cep,'$this->dataNascimento')";
		mysql_query($sql,$conexao);
		mysql_close($conexao);
	}

       //autenticação 

      // getters ... setters que não são static

[/code]

É basicamente isso, o detalhe é que está em php5,
vou fazer como gpellizzoni disse =D