Java - getter 来自对象属性
Java - getter from a object attribute
我正在使用这些 classes:
class克兰特
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;
}
}
class 遗弃
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;
}
}
class米隆
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;
}
}
现在我有一个带有 Milon
订阅的 Klant
对象。目前我无法检索他们订阅的 niveau。
第一个想法是:
piet.getAbbonement().getNiveau()
但它不起作用可能是因为我认为它来自抽象 class?
现在我的问题是,如果它在 Klant
对象中被遗弃,我如何从 Milon
中 return niveau?
您可以尝试类似的操作:
Abbonement abbonement;
int niveau;
abbonement = myKlant.getAbbonement();
if (abbonement instanceof Milon) {
Milon milon;
milon = (Milon)abbonement;
niveau = milon.getNiveau();
} else {
niveau = 0;
}
如果属性比较笼统,貌似是这样,把它带到基地class。
public abstract class Abbonement {
public int getNiveau() {
return 0;
}
...
public class Milon extends Abbonement{
@Override
public int getNiveau() {
return niveau;
}
}
通常在基础 class 中会有一个方法,在 Milon 中被覆盖以对 niveau
和可能的其他字段做一些事情。说是为了显示有关 Abbonement 的信息。或者压缩业务逻辑的东西 Abonnement.isGoedNiveau()
.
将 Abbonement 施放给 Milon 是一种更实用的 hack,并且风格不佳:在那个地方,额外的信息太具体了。
我正在使用这些 classes:
class克兰特
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;
}
}
class 遗弃
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;
}
}
class米隆
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;
}
}
现在我有一个带有 Milon
订阅的 Klant
对象。目前我无法检索他们订阅的 niveau。
第一个想法是:
piet.getAbbonement().getNiveau()
但它不起作用可能是因为我认为它来自抽象 class?
现在我的问题是,如果它在 Klant
对象中被遗弃,我如何从 Milon
中 return niveau?
您可以尝试类似的操作:
Abbonement abbonement;
int niveau;
abbonement = myKlant.getAbbonement();
if (abbonement instanceof Milon) {
Milon milon;
milon = (Milon)abbonement;
niveau = milon.getNiveau();
} else {
niveau = 0;
}
如果属性比较笼统,貌似是这样,把它带到基地class。
public abstract class Abbonement {
public int getNiveau() {
return 0;
}
...
public class Milon extends Abbonement{
@Override
public int getNiveau() {
return niveau;
}
}
通常在基础 class 中会有一个方法,在 Milon 中被覆盖以对 niveau
和可能的其他字段做一些事情。说是为了显示有关 Abbonement 的信息。或者压缩业务逻辑的东西 Abonnement.isGoedNiveau()
.
将 Abbonement 施放给 Milon 是一种更实用的 hack,并且风格不佳:在那个地方,额外的信息太具体了。