【发布时间】:2018-04-09 09:08:39
【问题描述】:
我正在使用这些课程:
类克兰特
public class Klant {
private String naam;
private String adres;
private String geboortedatum;
private double gewicht;
private int bmi;
private Abbonement abbonement;
public Klant(String naam, String adres, String geboortedatum, double gewicht, int bmi, Abbonement abbonement){
this.naam = naam;
this.adres = adres;
this.geboortedatum = geboortedatum;
this.gewicht = gewicht;
this.bmi = bmi;
this.abbonement = abbonement;
}
public Abbonement getAbbonement() {
return abbonement;
}
}
Abbonement 类
public abstract class Abbonement {
private String begindatum;
private int contractduur;
private double maandprijs;
Abbonement(String begindatum, int contractduur, double maandprijs){
this.begindatum = begindatum;
this.contractduur = contractduur;
this.maandprijs = maandprijs;
}
}
米隆班
public class Milon extends Abbonement{
private int niveau;
public Milon(String begindatum, int contractduur, double maandprijs, int niveau){
super(begindatum, contractduur, maandprijs);
if(niveau >= 1 && niveau <= 25) {
this.niveau = niveau;
} else {
this.niveau = 1;
}
}
public int getNiveau() {
return niveau;
}
}
现在我有一个Klant 对象和Milon 订阅。目前,我无法检索他们订阅的最新消息。
首先想到的是:
piet.getAbbonement().getNiveau()
但它不起作用可能是因为我认为它来自一个抽象类?
现在我的问题是,如果它是 Klant 对象中的缩写,我如何从 Milon 返回 niveau?
【问题讨论】:
-
这确实不起作用,因为 getter 没有在抽象类中定义。有什么阻止您在抽象
Abbonement类中定义getNiveau方法吗? -
目前没有,但是 Niveau 是特定于类的,其他的没有那个属性
-
@MrEmper 如果是这种情况,你不能调用
getNiveau()而不先转换为Milon。 -
这个转换应该可以工作:
((Milon)(piet.getAbbonement())).getNiveau() -
完美,就像一个魅力! @Dropout 我知道,但我不得不用荷兰语写这个,对不起。谢谢大家的反应。
标签: java class object inheritance abstract