Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我不知道';我似乎不明白super()关键字和它';它的用法很好_Java_Class_Inheritance_Methods_Polymorphism - Fatal编程技术网

Java 我不知道';我似乎不明白super()关键字和它';它的用法很好

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

我知道当从另一个类继承时使用它,并且必须首先在构造函数内部调用它,如果我不手动调用它,则会自动调用空的super()方法

例如,我们有一个名为bank的父类:

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);
    ...
}