-2

例:クラスまたはクラスcustomerである 2 つの子クラスを持つクラスがあります。インスタンス変数として持っています。インスタンス変数としても持っていますか? 顧客層はどうですか?guestsigned-up usersCustomer classusernameguest classusernamemethods

4

2 に答える 2

0

すべての属性とメソッドが子クラスに存在するという意味で、Java での継承は常に完全です。「スーパー」クラスでプライベートとして宣言されたものは、サブクラスでは表示されませんが、サブクラスにはまだ存在します。

ある種の部分継承について考えている場合、最善の方法はクラス モデルを再考することです。すべての特定のケースに適用できる別の基本クラスを作成します (そのためusername、Customer クラスに属性がある場合は、すべての顧客が 1 つ持っていることを確認する必要があります)。Guest オブジェクトにその属性を持たせたくない場合は、単にそれを Customer から削除し、SignedUpCustomer クラスで宣言します。Java インターフェイスは、他の場合にも役立つ場合があります。

于 2014-10-01T23:47:06.653 に答える
-1

Guest クラスと SignedUpUsers クラスは、アクセス レベルが「プライベート」またはデフォルト (アクセス レベルが指定されていない) としてマークされていない Customer クラスからすべてのクラス メンバー (メソッドと変数) を継承します。

したがって、あなたの例では、ユーザー名変数のアクセスレベルがパブリックまたは保護されている場合、それは継承されます。同じことがすべてのメソッドに当てはまります。

String username; // will not be inherited
private String username; // will not be inherited
protected String username; // will be inherited
public String username; // will be inherited
于 2014-10-01T21:01:47.557 に答える