0

Java でのインターフェイスとその重要性について学んでいます。以下で作成したプログラムのような内部クラスのインターフェイスを作成する必要がありますか? このクラスの目的は、政府の漠然とした原型と、それが最も単純な形でどのように機能するかを示すことです。法律、上院議員、および国会議員を追加するいくつかのメソッドを作成しました。このコードは、私が達成しようとしていることに対して機能しますか?

public class usaGov
{

private int sizeOfSenate = 105;
private int sizeOfCongress = 308;
private int amtOfLaws = 0;
private int law = 0;

void addSenateMember(int numberOfSenators)
{        
        sizeOfSenate = sizeOfSenate + numberOfSenators;
}

void addCongressMember(int numberOfCongressMembers)
{
    sizeOfCongress = sizeOfCongress + numberOfCongressMembers;
}    

void removeSenateMember(int numberOfSenators)
{        
       sizeOfSenate = sizeOfSenate - numberOfSenators;   
}

void removeCongressMember (int numberOfCongressMembers)
{
    sizeOfCongress = sizeOfCongress - numberOfCongressMembers;
}

void passLaw()
{
    if (law == 3)
    {
        amtOfLaws++;
    }

}

private class Senate 
{
void senateYes()
{
    int yes = 1; 
    law = law + yes;
}
void senateNo()
{
    int no = -1;
    law = law + no;
}

}
private class Congress
{ 
void congressYes()
{
    int yes = 1;
    law = law + yes;
}
void congressNo()
{
    int no = -1;
    law = law + no;
}
}
private class President
{
void presidentYes()
{
    int yes = 1;
    law = law + yes;
}
void presidentNo()
{
    int no = -1;
    law = law + no;
}
}    


}

これが私のインターフェースです:

public interface americanGov
{
void addSenateMember(int numberOfSenators);

void addCongressMember(int numberOfCongressMembers);

void removeSenateMember(int numberOfSenators);

void removeCongressMember (int numberOfCongressMembers);
}
4

3 に答える 3

2

ある時点で多重継承を取得したい場合にのみ、インターフェイスを使用する必要があります。

Java では、クラスは他の 1 つのクラスしか拡張できませんが、複数のインターフェイスを実装できます。

インターフェイスのその他の使用は、ベスト プラクティスであり、コード設計上の問題です。

経験則は次のとおりです。将来のある時点で誰か (あなた自身を含む) が同じものの別のドロップイン実装を書きたい場合は、 interface を使用してください。

同じものの複数の内部実装があることがわかっていない限り、通常、内部クラスはこのカテゴリに分類されません。したがって、ここでインターフェイスを使用するのはやり過ぎかもしれません。

于 2012-11-17T10:51:18.327 に答える
0

あなたの場合、すべての法律投票は同じコードを共有しています。すべての投票に 1 つのクラスのみを使用することで、コードを大幅に短縮して単純化できます。

public class USAGOV {

    private VotingBody senate = new VotingBody(105);
    private VotingBody congress = new VotingBody(305);
    private VotingBody president = new VotingBody(1);

    void passLaw() {
        //logic to count votes from senate, congress and president
    }

    private class VotingBody {
        int members;
        int law;

        VotingBody(int members){
            this.members = members;
        }

        int getSize() {
            return members;
        }

        void voteYes() {
            int yes = 1;
            law = law + yes;
        }

        void voteNo() {
            int no = -1;
            law = law + no;
        }

        void addMembers(int members){
            this.members += members;
        }

        void removeMembers(int members){
            this.members -= members;
        }

    }
}
于 2012-11-17T11:12:06.670 に答える
0

インターフェイスを作成しましたが、実装していません。実践しなければ意味がありません。インターフェイスは、多重継承を実現するために使用できる抽象クラスです。または、インターフェイスを実装するクラスに関数を定義するよう強制する場合に使用できます。これらは、インターフェイスの 2 つの主な用途です。

于 2012-11-17T12:00:51.707 に答える