• 締切済み

クラスについての質問

ttnnkkyyの回答

  • ttnnkkyy
  • ベストアンサー率26% (255/980)
回答No.1

通常はgetterやsetterと呼ばれるメソッドを用意します。 メソッドを介すことで予期しない操作を防ぎます。 ただし、何も考えずに用意してしまってはいけません。 その実装良いのか、本当にpublicにして良いのか、そもそも必要なのか、よく考えるべきです。 細かいことは検索すれば沢山出て来ますが、そもそも「OOPとは何なのか」から理解しないと難しいですよ。

Uriaria
質問者

お礼

返答ありがとうございます! なるほど、そんなメソッドがあるのですね。早速調べてみたいと思います。 オブジェクト指向の基礎を覚えていなかったので、これから調べてみます。 ありがとうございました。

関連するQ&A

  • クラス変数について質問

    Javaのオブジェクト指向を解説した参考書で現在勉強しているのですが、その参考書のある問題の答えの解説として「クラス変数は参照変数なので参照以外を代入できません」と書いてありました。 でも、例えば、static int n=0と書けば、0をnに代入できます。 因みに、「クラス型の変数」は参照しか代入できないのはわかっています。 よって「クラス変数」は誤植で、正しくは「クラス型変数」なのでしょうか?

    • ベストアンサー
    • Java
  • クラスの外で宣言した変数について

    初心者的な質問ですみません。 クラスの外で宣言した変数をそのままクラス内で使うことはできないのでしょうか? publicのメンバーにポインタの変数を作ってそこにアドレス指定するか、setするメソッドを作るしかないのでしょうか? もしクラスの外で宣言した変数をそのままクラス内で使えないのは、スコープ的にどういう理由で使えないのか教えて下さい。 クラス内クラスだと子クラスは親クラスの変数を参照できますが、それとは違うのでしょうか? どうぞよろしくお願い致します。

  • PHPでセッションに入れたクラスの変数が消える

    こんにちは。 PHPでセッションを使っていて困ったことが怒りました。 セッションに入れたクラスインスタンスの中の変数が消えます。 一回目に参照したときは残っていますが、 2回目アクセスした時には無くなってます。 クラスインスタンスのメンバー変数に文字列など、PHP標準のものは残ってますが、メンバー変数にインスタンスを入れると、消えることが判明しました。 これはなぜですか?? よろしくお願いします。

    • 締切済み
    • PHP
  • サブクラス型オブジェクトをスーパークラス方に代入

    ある所で下記のような継承についての記述をみつけました。 ----------------------------------------------------------------------------- 継承の目的は、あるクラスで実装したメソッドなどの機能を利用して、 さらに実装を追加する差分コーディングです。 一つのクラスから複数のサブクラスを作ることも良くあります。 このような時、それらのサブクラス型オブジェクトの参照を代入できる変数として、 スーパークラス型変数を使うことがしばしばあります。 ----------------------------------------------------------------------------- サブクラス型オブジェクトの参照を代入できる変数として、 スーパークラス型変数を使うことがある、と いうのはどういった場合に使うのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • ローカルインナークラス

    ローカルインナークラスとは、 メソッド内で宣言されるクラス、 ですよね? ある問題に 「メソッドのブロック内でローカルインナークラスを定義した場合正しいものを選びなさい。 ○、インナークラスはfinalで宣言されたローカル変数しか使えない」 ???? ローカルクラスは「外部クラスのメンバ変数への参照更新は可能」ですよね??? 例 class Outer{   int count=0;     void func(){       class Inner{         void display(){           count++;         }       }     } } 外部クラスのcountにアクセスできますよね?? 問題が間違っているのか、 私が考え違いをしているのか、教えてください。

    • ベストアンサー
    • Java
  • C++でのstringクラスの内部の挙動

    最近C++でクラスを理解し始めて疑問に思ったことなんですが。 string A = "abcdef"; という風に直感的にstringに文字列を代入出来ていたので何の疑問も持たず使っていたんですが、これをどのように実現しているか内部の挙動がよくわかりません。 srtcopyはやり方は面倒臭いですがこっちは単純に関数に値を渡しているだけなので理解出来ます。 内部で=演算子のオーバーロードをしているんじゃないかと思って、=演算子をオーバーロドした自分で作ったクラスでテストしてみたんですが Testclass A; A = "abcdef"; は可能ですが、stringの例のように変数宣言と同時に代入する Testclass A = "abcdef" としてみると、Testclass型への変換が出来ませんとなって、string型と同じ事が出来ません。 stringクラスの中でどのようにクラス宣言直後の代入をしているか教えてください

  • rubyのクラス変数のようなものは無い?

    rubyのクラス変数に相当するものはPHPにはないのでしょうか? つまり、あるクラスの全てのインスタンスで共有する変数です。 DB中に存在する環境固有の値をクラスで保持したいのですが、インスタンスごとにDBアクセスするのは無駄なので、初回インスタンス生成時(is_nullで判断)にのみDBアクセスして、あとはそれを参照するだけにしたい。 globalを使って全体でのグローバル変数にするしかないのでしょうか?

    • ベストアンサー
    • PHP
  • VB.NET 2005 クラスの参照について

    Aというクラスに A1という 変数をPublicで宣言します。 これを Bというクラスで 参照したいのですが どうすればいいでしょうか? Bは Aから呼び出されます。

  • クラスがメンバーとしてクラスを持つ時の宣言について

    自作クラスMainClassがMyClassというクラスをメンバー変数として持つ場合、宣言時に引数をいくつか持つコンストラクタを呼び出そうとすると構文エラーとなります。 class MyClass { public: MyClass(int, int); } class MainClass { private: MyClass myclass(10,10); } このような宣言はできないのでしょうか。 引数なしのコンストラクタは呼び出せているようです。

  • C++、クラスメンバの構造体配列の初期化について

    クラスのメンバに構造体の配列を持っていて、その構造体はfloat値を4つ持ってます。 私はいつもメンバ変数の初期化はコンストラクタでしています。 クラス生成時に全てのfloatを0で初期化したいのですが、これはコンストラクタでfor文を回すしかないのでしょうか? 一文で初期化することは出来ないのでしょうか? 話は少し変わってしまいますが、今思ったのですがコンストラクタで値を決めるのは初期化じゃなくて代入と呼ぶのですかね? ご助力よろしくお願いします。