Um personagem de um jogo:
A questão é: alguns personagens chutam e socam de forma diferente.
class Personagem {
void pular();
void chutar();
void socar();
}
class Ruy : public Personagem {
void pular() {
this.altura_max = 10;
}
}
class Chunli : public Personagem {
void pular() {
this.altura_max = 15;
}
}
Personagem player1 = new Ruy();
Peronsagem player2 = new Chunli();
delete player1;
delete player2;
E como fazer caso eu queria executar algo que havia na classe base?
class Chunli : public Personagem {
void pular() {
this.altura_max = 15;
Personagem::pular();
}
}
E não, mesmo sendo irmãos, a classe Chunli
não pode fazer Ryu::pular()
.
Função/variável que está visível para classes filhas e nas instâncias.
Padrão quando não há uma visibilidade definida.
class PublicExample {
public:
int a_number;
void set_a_number(int number_to_set);
int get_a_number();
}
Função/variável que está visível apenas para classes filhas.
class PrivateExample {
private:
int a_number;
public:
void set_a_number(int number_to_set);
int get_a_number();
}
Função/variável é visível apenas dentro da própria classe.
class ProtectedExample {
protected:
int a_number;
public:
void set_a_number(int number_to_set);
int get_a_number();
}
class Example {
public:
void set_a_number(int number_to_set);
void set_a_number(float number_to_set);
void set_a_number(string number_to_set);
}
class Example {
public:
int get_a_number();
float get_a_number();
string get_a_number();
}
Ryu player();
Arena arena.add_player(player);