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中,一个类只能扩展另一个类,但它可以实现多个接口。

接口的任何其他用途都是最佳实践和代码设计。

经验法则是:如果某人(包括您自己)在未来的某个时间点可能想要编写相同事物的替代插入式实现,请使用接口

内部类通常不属于这一类,除非您知道您将拥有同一事物的多个内部实现。所以在这里使用接口可能是过度的。

于 2012-11-17T10:51:18.327 回答
0

在您的情况下,所有法律投票共享相同的代码。您可以通过仅对所有投票使用一个类来显着缩短和简化代码:

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

您已经创建了接口但没有实现它。如果您不实施它,它将毫无用处。接口是抽象类,可以用来实现多重继承,或者如果你想强制一个实现你的接口的类来定义其中的函数。这是接口的两个主要用途。

于 2012-11-17T12:00:51.707 回答