オブジェクトの個々の属性がプライベートであることを、あなたに言った誰が絶対だった右!
OOPの基本原則の1つはEncapsulationです。簡単に言えば、オブジェクトの内部構造(「フィールド」)を隠す必要があるということです。これはOOPの最も重要な側面であり、そこからOOPの利点の大半が得られます。あなたは、もはや内部構造を隠しているので、今
、アクセサメソッド(セッターとゲッター)は、カプセル化、同じようにちょうど公共が行うそれらを作るに違反していません。それはちょうど約を保護することではありません内部フィールド、それは約を隠すです。
残念ながら、アクセサメソッドはJava(およびC#も)の共通の慣用法ですが、OOPを学ぶことに真剣に取り組んでいるなら、それらを避けてください。後で経験が豊富になると、例外が発生するケースもありますが、今は避けてください。プロジェクトロンボクを避け、自動生成するIDE機能を避けてください。
Hereは、対象のAllen Holubの素晴らしい記事です。
実際の質問に戻る:はい、あなたのフィールドをプライベートと宣言していますが、セッター/ゲッタはまったく定義していません。代わりに、オブジェクトが持つべき責任/機能/機能/ロジックについて考えてください。
したがって、統計情報について考えてみると、とは何について考えているのですか?あなたはそれらの統計情報を使用しています。オブジェクト指向のヒーローは、次のようになります。もちろん
public final class Hero {
private int hp;
private int strength;
private int agility;
private int armor;
...
public void dealDamageTo(Hero other) {
other.takeDamage(stength);
}
public void takeDamage(int damage) {
hp = hp - Math.max(0, damage-armor);
}
...
}
を、それが唯一の例ですが、あなたはおそらく、ポイントを得ます。デザインが正しい場合は、内部フィールドを公開する必要はありません。
Eclipse>右クリック>ソース>ゲッターとセッターを生成>すべてをチェック>完了 – Marvin
私はIntelliJを使用していました。そのような機能もありますか? @Marvin – Huzo