-4

シナリオは次のとおりです。

class Graph{
    // Now many variables

    Node masterUser;
    Node masterFilter;
    Node masterLocation;

    Index indexUser;
    Index indexFilter;

    Graph() {
        // INITIALIZE ALL Variables Here
    }
}


// SubClass

class MyClass{

    Graph graph = new Graph();

    // NOW I Can refer all class members of Graph class here by graph Object

}

今起こっていることは、graph.すべてのメンバーがアクセスできるようになるときです。

しかし、次のようにクラス Graph の変数をグループ化したい

ユーザーが行うとgraph.Index.、すべてのみIndexがアクセス可能になります。ユーザーが行うとgraph.Nodes.、すべてNodeの のみがアクセス可能になります。

どうすればいいですか?

4

1 に答える 1

4

それがインターフェースの目的です。

interface GraphNodes {        
    public Node getMasterUser();
    public Node getMasterFilter();
    public Node getMasterLocation();
}

interface GraphIndexes {
    public Index getIndexUser();
    public Index getIndexFilter();
}

class Graph implements GraphNodes, GraphIndexes {
    private Node masterUser;
    private Node masterFilter;
    private Node masterLocation;
    private Index indexUser;
    private Index indexFilter;

    public GraphNodes getNode() { return this; }
    public GraphIndexes getIndex() { return this; }

    public Node getMasterUser() { return this->masterUser; }
    public Node getMasterFilter() { return this->masterFilter; }
    public Node getMasterLocation() { return this->masterLocation; }
    public Index getIndexUser() { return this->indexUser; }
    public Index getIndexFilter() { return this->indexFilter; }
}

クラスのインスタンスがあり、次のGraphように書くとします。

Graph graph = new Graph();
graph.getIndex()./* ... */

インデックスの getter メソッドにのみアクセスできます。

graph.getNode()./* ... */

ノードのみにアクセスできます。

于 2013-09-04T07:40:23.527 に答える