0

私は、文字列ユーザー名、文字列パスワード、char 性別の 3 つの変数がある抽象クラス A を持っています。このクラスには、これらすべての変数を使用してそのクラスのオブジェクトを作成するコンストラクターがあります。

クラス A を拡張する別の 2 つのクラス B と C があり、それぞれの変数の 1 つを Object Person に追加します。つまり、クラス B は変数 isAdmin を追加し、クラス C は変数 isUser を追加する必要があります。

コンストラクターを使用して作成しようとしましたが、クラス B および C から A に変数を追加したくありません。これらの変数をクラスで個別に作成し、これらのクラスからコンストラクターを呼び出す場合B または C、変数の 1 つがオブジェクト ユーザーに追加されます。

public class abstract class A {
private String name;
private String password;
private char sex;
public A(String name, String password, char sex){
this.name = name; this.password = password; this.sex = sex;}
}

public class B extends A {
public int isUser = 1;
public B(String username, String password, char sex){
super(username, password, sex)}
}

それは可能ですか?前もって感謝します!

4

2 に答える 2

1
but I don't want to add any of the variables from classes B and C to A, I just want
to create these variables in their classes separately

それが継承の目的です!

Is that even possible?

はい、完全に有効です。

I've tried it, but if I put the int isUser in the constructor of the class B I will get
an error, because in the superclass constructor I have 3 variables, and in the class B
constructor I have 4 of them. That is the problem

クラス B には isUser インスタンス変数のみが必要です。クラス A にこの変数を含める必要がないため、コンストラクターに含める必要はありません。以下のようなことができます

public class B extends A {
public int isUser = 1;
public B(String username, String password, char sex,int isUser){
super(username, password, sex);
this.isUser = isUser;}
}
于 2013-10-16T19:39:30.780 に答える
0

クラス A に空のコンストラクターを作成する必要があります。

protected A(){}

次に、B および C クラスでこれを呼び出すことができます。

super()

コンストラクターが存在しない場合、新しいオブジェクトを作成するときに、空のコンストラクターが自動的に作成されます。ただし、コンストラクターが存在する場合、コンストラクターは自動的に作成されないため、空のコンストラクターが必要な場合は手動で追加する必要があります。

I've tried to make it with constructors, but I don't want to add any of the variables from classes B and C to A

継承を正しく理解しているかどうかはわかりません。B が A を拡張する場合、インスタンス B を作成すると、クラス A を持つすべてのメソッドとプロパティが含まれます。ただし、インスタンス B はインスタンス B になり、インスタンス A はなくなります。クラス A とクラス B の両方のプロパティ。

于 2013-10-16T19:41:56.713 に答える