Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-来自父级的相同方法,但使用每个子级的单独属性_Java_Generics_Methods_Parameters_Attributes - Fatal编程技术网

Java-来自父级的相同方法,但使用每个子级的单独属性

Java-来自父级的相同方法,但使用每个子级的单独属性,java,generics,methods,parameters,attributes,Java,Generics,Methods,Parameters,Attributes,我对我的代码有疑问: public abstract class Jogador { String nome; int pontos; Jogador (String n) { nome = n; } void aumentaPontos () { pontos++; } abstract <U extends Jogador> boolean melhor (U outro); }

我对我的代码有疑问:

public abstract class Jogador {

    String nome;
    int    pontos;
    Jogador (String n) {
        nome = n;
    }
    void aumentaPontos () {
        pontos++;
    }
    abstract <U extends Jogador> boolean melhor (U outro);
}  


class JogadorAdivinha extends Jogador {

    JogadorAdivinha (String n) {
        super(n);
    }

    boolean melhor (JogadorAdivinha outro) {
        if (this.pontos > outro.pontos)
            return true;
        return false;
    }
}  


class JogadorMemoria extends Jogador {
    int rodadasGanhas;

    JogadorMemoria(String n) {
        super(n);
    }

    boolean melhor(JogadorMemoria outro) {
        if (this.rodadasGanhas > outro.rodadasGanhas)
            return true;
        return false;
    }

    void aumentaRodadasGanhas() {
        rodadasGanhas++;
    }

}
公共抽象类Jogador{
字符串名称;
内蓬托斯;
Jogador(字符串n){
nome=n;
}
虚空幻影(){
pontos++;
}
抽象布尔melhor(U-outro);
}  
JogadorAdivinha类扩展Jogador{
JogadorAdivinha(字符串n){
超级(n);
}
布尔梅尔霍(JogadorAdivinha outro){
如果(this.pontos>outro.pontos)
返回true;
返回false;
}
}  
Jogadoria类扩展了Jogador{
内罗达斯甘哈斯;
JOGADORIA(字符串n){
超级(n);
}
布尔梅尔霍(Jogadoria outro){
如果(this.roadasganhas>outro.roadasganhas)
返回true;
返回false;
}
void aumentarodadasganahas(){
rodadasGanhas++;
}
}
我在Jogador的两个儿童班都会遇到编译问题。
但正如你所看到的,只有Jogadoria有rodadasGanhas。
所以,我想知道一种处理这种情况的方法。。。。如果我将方法melhor()的类Jogador作为参数,我将无法接收子项…

如果要在子类中实现这样的方法,我可以做些什么来覆盖抽象方法,并且不产生异味??

abstract <U extends Jogador> boolean melhor (U outro);
class JogadorAdivinha extends Jogador<JogadorAdivinha> {
  boolean melhor (JogadorAdivinha outro) { return true; }
}
然后您可以在子类中实现这一点:

abstract <U extends Jogador> boolean melhor (U outro);
class JogadorAdivinha extends Jogador<JogadorAdivinha> {
  boolean melhor (JogadorAdivinha outro) { return true; }
}
class JogadorAdivinha扩展了Jogador{
布尔melhor(JogadorAdivinha outro){返回真;}
}

这正是我想要的!我还在Java的noob级别。。。我从来没有读过关于泛型的书(我把它放在我的代码里,但我不了解它的功能……我还是不知道哈哈哈)。