Java 我不知道';我似乎不明白super()关键字和它';它的用法很好
我知道当从另一个类继承时使用它,并且必须首先在构造函数内部调用它,如果我不手动调用它,则会自动调用空的super()方法 例如,我们有一个名为bank的父类:Java 我不知道';我似乎不明白super()关键字和它';它的用法很好,java,class,inheritance,methods,polymorphism,Java,Class,Inheritance,Methods,Polymorphism,我知道当从另一个类继承时使用它,并且必须首先在构造函数内部调用它,如果我不手动调用它,则会自动调用空的super()方法 例如,我们有一个名为bank的父类: public class bank implements Comparable<bank> { private String owner; public String money; public boolean intheCubby; public bank(String na
public class bank implements Comparable<bank> {
private String owner;
public String money;
public boolean intheCubby;
public bank(String name, String ownersName) {
owner = ownersName;
money = name;
}
我知道它是这样工作的,在父类中有一个bank构造函数,它有两个字符串参数。
你的超级;因此,方法还应该包含2个字符串类型的参数。
但是如果子类的构造函数只有(String,int)个参数,我应该把(String,null)放到super()中吗;方法?因为我必须插入其他内容,所以出现了一个错误。您必须从子类构造函数调用一个超类的构造函数 如果超类只有一个接受两个
String
s的构造函数,则必须从子类构造函数调用该构造函数。子类的构造函数应该决定传递给超类构造函数的String
实例
以你为例,
public Account(String name, int n, String ownersName) {
super(name, ownersName);
...
}
会有用的
public Account(String name, int n) {
super(name, "someDefaultValue"); // or super(name, null);
...
}
也将起作用。Bank类只有一个带有
名称
和所有者名称
参数的构造函数。因此,当从Account
类调用super()
时,您必须决定如何初始化这两个参数。如果在帐户
中没有所有者名称
,则可以将null作为第二个参数传递。如果Bank类确实依赖于设置的ownersName
,这可能会导致问题
我还发现,
Account
扩展了Bank
,这很奇怪,因为账户实际上不是银行。但我可能错过了你们设计的全部内容。如果希望银行是账户
的字段,或者银行
有数组列表
字段。在这种情况下,将构造函数与此()链接;会是
最佳。null对于int这样的基元类型不是有效值,所以我的理解是我可以调用Account(参数);在另一个帐户构造函数中?@SupEldrix你可以,只要另一个构造函数调用一个现有的超类构造函数(即使用正确的参数数量和类型调用super(…))。我只需要举一个简单的例子,我正在处理的不是一个真正的程序,我只是想重新创建我的问题。
public Account(String name, int n) {
super(name, "someDefaultValue"); // or super(name, null);
...
}