Java子类在构造函数中少取1个参数
我正在编写一个简单的程序,用JavaFX显示个人卡号、姓名和限制。如何使子类在其构造函数中少继承一个参数?我有两种不同的卡类型,一种是没有限制的借记卡,另一种是我在创建对象时会给出限制的信用卡
public AccountData(String id, String name, int limit) {
this.id = id;
this.name = name;
this.limit = limit;
}
因此,在创建扩展AccountData的借记卡子类时,我不需要limit参数,因为它没有limit参数
先谢谢你
# 1 楼答案
只需在超级类中为借记卡添加另一个构造函数,该构造函数接受的参数更少
# 2 楼答案
干净的方法是将
limit
从AccountData
类中删除(因为它显然不是一个公共属性),只在信用卡类中引入它:如果您想坚持当前的方法,可以向
AccountData
类添加第二个构造函数,例如,将limit
设置为默认值(可能是Integer.MAX_VALUE
或-1
,尽管前者似乎更合适):# 3 楼答案
只需编写一个参数更少的新构造函数,如下所示:
# 4 楼答案
那么
CreditCard
和DebitCard
大概是AccountData
类型的子类;因此,让limit
成为CreditCard
子类的属性,而不是AccountData
:# 5 楼答案
从概念上讲,我建议重新设计,因为一个子类具有不同的继承成员集,而另一个子类具有不同的继承成员集,这不是一个好主意,两者都继承相同的父类。但是,对于特殊情况,我可以建议在AccountData和Credit Card类中设置私人整数限制。这样,你就可以保护你的会员。 如果你有一个参数较少的构造函数,就会产生问题。因为,若limit是公共的,则可以从DebitCard类访问它,因为它将继承。 所以,最好对AccountData和CreditCard类都设置私有int限制