2

間違った言葉を使っているかもしれませんので、間違っていたら教えてください。訂正します。Java Hierarchy から収集したものに基づいて、私はそれが呼び出されると思うものに従っています。
しかし、ここに私の質問があります:

この例では、私が見たことを説明し、質問をしてから、例を示します。(Method特に断りのない限り、この言葉が適切だと思うので、この言葉を使用します)

変数を持つ方法を知っていますか? この例では、それはString? myString.setText("String");この文字列に対して、 、またはのようなメソッドを使用できますmyString.equalsIgnoreCase(otherString);

さて、私の質問ですが、実際に独自のメソッドを作成することは可能ですか?

この例のために、 としましょうmyString.setText("Knife");。ナイフであることがわかっているので、それが装備されているかどうかを確認したり、装備したりするためにmyString呼び出すことができるメソッドを作成できますか? myString例:myString.setEquipped(true);装備されているかどうかを確認したい場合は、呼び出すことができますmyString.getEquipped();

私は言葉をMethod適切に使っていますか?私の最初の質問が可能であれば、小さな例を挙げていただけますか?

お忙しい中、ありがとうございました。

4

3 に答える 3

4

はい、すべて実行できますが、IDE を使用してこれらのメソッドを生成することをお勧めします。たとえば、持っている場合。

public class Item {
    private final String name;
    private boolean equiped;
}

IDE でこれらのメソッドを生成できます。

public class Item {
    private final String name;
    private boolean equiped;

    public Item(String name) {
        this.name = name;
    }

    public boolean isEquiped() {
        return equiped;
    }

    public void setEquiped(boolean equiped) {
        this.equiped = equiped;
    }

    public String getName() {
        return name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Item item = (Item) o;

        if (equiped != item.equiped) return false;
        return !(name != null ? !name.equals(item.name) : item.name != null);
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + (equiped ? 1 : 0);
        return result;
    }

    @Override
    public String toString() {
        return "Item{" +
                "name='" + name + '\'' +
                ", equiped=" + equiped +
                '}';
    }
}

こんな感じで使えます

Item knife = new Item("Knife");
knife.setEquiped(true);
System.out.println("Item is " + knife);
于 2013-05-23T17:17:59.293 に答える
3

Java で実装されているオブジェクト指向プログラミングの基本を探しているだけだと思います(はい、「メソッド」が正しいです)。オブジェクトの内部状態を変更するいくつかのメソッドでオブジェクトを定義したいと考えています。非常に単純な例:

public class MyObject {
    // Instance variables
    private String text;
    private boolean equipped;

    public MyObject() {
        // Default constructor
    }

    // setters
    public void setText(String text) {
        this.text = text;
    }
    public void setEquipped(boolean equipped) {
        this.equipped = equipped;
    }

    // getters
    public String getText() {
        return this.text;
    }
    public boolean isEquipped() {
        return this.equipped;
    }

    // main method
    public static void main(String[] args) {
        MyObject o = new MyObject();
        o.setEquipped(true);
        o.setText("Knife");
        System.out.println("Is 'o' equipped?");
        System.out.println(o.isEquipped());
        System.out.println("What is 'o'?");
        System.out.println(o.getText());
    }
}

String class他の人が言ったように、を変更することはできませんfinal。ただし、必要なことを実行するために必要なすべてのメソッドとオブジェクトを使用して、独自のクラスを定義できます (また、定義する必要があります)。たとえば、あなたが示した例では、オブジェクトを設定してから、textそれが装備されているかどうかを確認できるようにしたいと考えていました。Stringこれは、クラスの各インスタンスに( text) とboolean( equipped)が含まれるクラスが必要であることを示唆しています。

これが、私が行った方法で例を書くことを選択した方法です。オブジェクトは、 と の両方に対して「has-a」関係を必要Stringとしbooleanます。オブジェクトが実際にaまたは aであることは意味がないため、これは「 is-a 」関係とは対照的です。Stringboolean

ただし、たとえば、このオブジェクトが であることが理にかなっている場合があります。Weaponその場合、クラスを定義してから、Weaponそのクラスをクラス、クラスなどで拡張します。KnifeSword

于 2013-05-23T17:20:51.907 に答える
2

経由のみ

  1. これはあなたが本当にやりたいことではありません
  2. 元のソースを変更します。ほとんどの場合、 のソースを変更することはできませんString

次に、クラスを派生させてメソッドを追加する継承があります。ほとんどのクラスはできますが、Stringそのままではそれらの 1 つではありませんfinal

于 2013-05-23T17:16:08.030 に答える