必须实现抽象方法错误,但它就在那里

时间:2016-04-03 17:07:26

标签: java

继续得到错误,我似乎无法弄清楚为什么,抽象方法实现的。我尝试添加关键字public,但这根本没有帮助。我在互联网上阅读了关于抽象方法的例子,但其中大多数都是void

抽象类:

public abstract class Osoba {

private String ime_prezime;
private char pol;

public Osoba(String ime_prezime, char pol) {
    this.ime_prezime=ime_prezime;
    this.pol=pol;

}

public String getImePrezime() { return ime_prezime; }
public void setImePrezime(String ime_prezime) { this.ime_prezime=ime_prezime; }

public char getPol() { return pol; }
public void setPol(char pol) { this.pol=pol; }



abstract int brojGodinaOsobe(Datum danasnji_datum);
}

子类:

public class OsobaDatum extends Osoba{

private Datum datum_rodjenja;

public OsobaDatum(String ime_prezime, char pol, final Datum datum_rodjenja) {
    super(ime_prezime, pol);
    this.datum_rodjenja=datum_rodjenja;
}

public String toString() {
    return "OsobaDatum: \n" + "Ime i prezime: " + getImePrezime() +
            "\n" + "Pol: " + getPol() + "\nDatum rodjenja: "
           + datum_rodjenja.toString();
}

int brojGodina(Datum danasnji_datum) {

    if ( datum_rodjenja.getMesec() < danasnji_datum.getMesec() ) {
        return danasnji_datum.getGodina() - datum_rodjenja.getGodina();
    }

    else if (datum_rodjenja.getDan() <= danasnji_datum.getDan() && 
            datum_rodjenja.getMesec() == danasnji_datum.getMesec()) {
        return danasnji_datum.getGodina() - datum_rodjenja.getGodina();
    }

    else 
        return danasnji_datum.getGodina() - datum_rodjenja.getGodina() -1 ;

 } 

}

2 个答案:

答案 0 :(得分:2)

抽象方法的名称是brojGodinaOsobe(),看起来你只实现了一个名为brojGodina()的方法。添加Osobe,你应该没问题。

答案 1 :(得分:2)

看起来你没有覆盖Super class的方法brojGodinaOsobe(Datum danasnji_datum);

在OsobaDatum课程中将brojGodina(Datum danasnji_datum)更改为brojGodinaOsobe(Datum danasnji_datum)

问候。