• ベストアンサー

privateって・・・どういう事・・・ 

privateを違うクラスから使いたい変数を呼び出すためのものみたいに認識しているのですが、 public void ・・・・・・ private ・・・・・・  みたいな文章だと式の始まりが不正ですというエラーが出てしまいます privateを使いたい時はどうしたいいんでしょうか・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • yokkou
  • ベストアンサー率30% (34/111)
回答No.5

public void itemStateChanged(ItemEvent e){  private ButtonGroup group;  String newElement = this.group.getButton(); } って事ですよね? 関数内では「public」「private」などの宣言が出来なかった気がします この場合、 public void itemStateChanged(ItemEvent e){  ButtonGroup group;  String newElement = this.group.getButton(); } となりますが、  ButtonGroup group;  String newElement = this.group.getButton(); groupがコンストラクト(「new ButtonGroup()」)されていないので、コンパイルエラーです this指定されているので、 他でgroup変数を宣言されていれば、そちらが使われますが・・・ 通常 外部から参照させたい場合は public関数(!)を用意し 内部処理だけならば private関数となります 変数のpublicは使用せずに「get/set」で対応します private String lDummy = "ダミー変数"; //クラス変数「lDummy」を返却する例 public String getDummyString(){ return lDummy; } //クラス変数とメソッド変数?を返却する例 public String getDummyString(){ //関数内でのみ有効なメソッド変数?(正式な言い方は知りません) String lDummy = null; if (上記で宣言した「lDummy」を返却する場合){ return lDummy; } else if (クラス内で宣言している「lDummy」を返却する場合){ return this.lDummy; } } 長文となりましたが、こんな感じです。 不明点は個別に質問を出した方が、回答者も質問者もわかりやすいと思いますので、 これ以上の不明点は再度、質問された方がよいかと思います

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • potch
  • ベストアンサー率34% (24/70)
回答No.4

ANO.1回答は少し的外れでしたね。 privateはメソッドもしくは変数を立てる際、ほかのクラスやオブジェクトから操作されないようにするための、指定子です。 ですから、privateをやたら使うのではなく、変数を宣言するときと、メソッドやクラスの名前を宣言するときに使います。 例: private int hoge = 1; -------------------- private void hoge(){ ... } また、変数を参照するときやメソッドを使うときにprivateを付ける必要はありません。 例: private hoge("test"); <- × hoge("test"); <- ○

参考URL:
http://wisdom.sakura.ne.jp/programming/java/java32.html
cool12
質問者

お礼

再び解答ありがとうございます ああ、なるほど 前のクラスから変数を呼び出すために使うものが欲しかったんですが そういう効果では無かったんですね・・・ やってる問題でpublic内だけどをいじって指定されたとおりに動かさないといけないんですが 変数が明らかに足りない・・・ 呼び出してしまおうと思ってprivateを使おうとしたけど呼び出せない という状況になってました ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

public void ・・・・・・ private ・・・・・・ をそのまま貼り付けてみては? public宣言の最後が;で終わってないとか{}があってないとか、そんな感じの気がします。

cool12
質問者

お礼

解答ありがとうございます public void itemStateChanged(ItemEvent e){ private ButtonGroup group; String newElement = this.group.getButton(); っていう風になってるプログラムなんですが {}も合ってると思います エラーでは 式の開始が不正です。 private ButtonGroup group; という文章が出てきます

全文を見る
すると、全ての回答が全文表示されます。
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.2

英語の意味のままです private ━━ a. 私の, 個人(的)の; 私用[有]の; 内密の, 非公開の, 親展の; 民間の, 私立[私営]の; 官職を持たない, 平民の; 人目につかない, 隠遁した public ━━ a. 公共の, 公衆の, 公の; 公務の; 公衆用の, 公立の, 公開の; 公然の; 知れ渡った. 外部から参照する場合には、public を使用します。

cool12
質問者

お礼

解答ありがとうございます public の↓にprivateの文を書くとエラーが出るんですが

全文を見る
すると、全ての回答が全文表示されます。
  • potch
  • ベストアンサー率34% (24/70)
回答No.1

privateのついたメソッド&変数は、同じクラス内でしか呼び出したり参照することができません。

cool12
質問者

お礼

解答ありがとうざいます privateの役割が違うクラスから変数を呼び出す時に必要なものだと思ってるんですが

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javaのprivateって?

    privateの必要性がいまいちわからなくて困ってます。 class Car{ private int num; private double gas; public void setNumGas(int n, double g){ num=n; gas=g; ・・・・・・・ このようなプログラムがあります。 変数をprivateにして、下のメソッドでnの値をnumに格納してします。 ここで変数をprivateにする意味ってあるんですか? 本には、勝手な値(-10など)を代入させないためと書いてあります。 これっておかしくないですか? 変数をprivateにしてもメソッドに「-10」を引数として渡したら余裕で格納できるじゃないですか。 代入させないためと書いてあるのに格納できるって・・・・矛盾してるような気がします。 ここでprivateにする意味がわかりません。 誰か教えてください。

  • C++でfriendクラスにしているのにprivateメンバにアクセスできない

    C++でメンバ変数をprivateにして、特定のクラスにだけ公開するようにクラスをfriend指定したのですがprivateメンバにアクセスできませんとエラーが吐かれてしまいます。 先行宣言したりもしてみたのですがどうしても使用できません。 何か心当たりのあるかた教えてください。 class A { friend class B; private: int a; }; class B { public: void test( A *a ) { a->a = 0; } }; コードは違いますがこんな感じのことをしたいのです。 /* コンソールで小さなプログラムでテストしてみると動くのにいざ実際のソースに組み込むと動かないという奇妙な状態です。よろしくお願いします。 */

  • Javaでprivate変数を他クラスから書き換る

    Javaでprivate変数を他クラスから書き換えたいです 調べてみたら http://d.hatena.ne.jp/devworks/20090129/1233211971 がヒットしたのですが どうもうまくいきません エラーなどはなくどうすればいいかわかりません 誰かサンプルソースなど書いてくださらないでしょうか? 回答よろしくお願いします

    • ベストアンサー
    • Java
  • ◆完全に、privateなメソッドにしたい

    クラスA内に、 privateで、staticなメソッド「hogehoge」を作った時、 完全に、「hogehoge」の中の変数・Inputパラメータ、Outputパラメータだけで処理をさせたいです。 ◆具体例:(こういうのをできないようにしたい) クラスA.h static 変数X static 変数Y static メソッド hogohoge (略) クラスA.cpp メソッド hogohoge (略) { z = 変数X + 変数Y } //---------------------------------- ◆やりたいこと メソッド上のように、変数Xや、変数Yにアクセスできてしまうのを、制限したいのです。  例えば、pragmaとかを書いて、オプションで制限できたりできないでしょうか? 完全に、「hogehoge」の中の変数・Inputパラメータ、Outputパラメータだけで処理をさせたいです。 また、今回はstatic 変数だけを引き合いに出しましたが、  他にも「実はアクセスできちゃうんだよね」というものがあれば、  (例えばdefineとか?) ご教授頂けるとさらに嬉しいです。 .

  • PHP,privateの使用理由について

    初心者PHPプログラマーです。 質問させて頂きます。 アクセス権に関して、そのクラス内でしか使わないメンバ変数等はprivateで定義した方が良いというのをあちこちのサイトで目にします。 その理由に関してはpublicで指定した場合、値が?書き換えられる可能性があるからということをよく耳にしますが、 この書き換えられるというのはどういうことなのでしょうか? これは [$aaa = 0;]と、定義しているメンバ変数を [$aaa = 3;]と、書き換えられる可能性があるということでしょうか? 現状よく理解出来ていない状態でprivateなどを使い分けています。 初歩的な質問かとは思いますが、ご存知の方がいらっしゃいましたら、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPのprivate関数について

    PHPのアクセス修飾子privateについてお聞きします。 以下のようなコードを書いて実行したら、エラーメッセージが出ました。 code: <?php class Super { protected function protectedFunc(){ echo "original-Protected\n\r"; } private function privateFunc(){ echo "Private\n\r"; } public function publicFunc(){ privateFunc(); } } $super = new Super; $super->publicFunc(); ?> error message: Fatal error: Uncaught Error: Call to undefined function privateFunc() in C:\xampp\htdocs\HTML_practice\protected-practice.php:12 Stack trace: #0 C:\xampp\htdocs\HTML_practice\protected-practice.php(17): Super->publicFunc() #1 {main} thrown in C:\xampp\htdocs\HTML_practice\protected-practice.php on line 12 line12 というのは、public 関数であるpublicFunc() の内側で、private関数のprivateFunc() を使おうとした部分ですが、private関数はクラス定義の中だから使えるというのは間違った認識でしょうか? だとするとprivate関数はいつどんな時に使えるのでしょうか? どなたか例を挙げて説明頂けないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • privateのメンバ変数を直接取得するユーティリティ。

    privateのメンバ変数を直接取得するユーティリティ。 以前、あるプロジェクトでクラスのprivateメンバ変数をgetterメソッドがないのに直接取得できるクラスを使っているのを見ました。 オブジェクトとメンバ変数とかを引数に渡すと、Object型で返却されるようなテスト用のユーティリティクラスみたいでした。 クラスやパッケージなどを確認しなかったので、もしかしたらそのプロジェクトで独自に作ったのかもしれません。 ただオープンソースとかで存在するのであればテストに便利なので利用したいと考えています。 できればsetterメソッドがないprivateメンバ変数に設定できるクラスがあるとよいのですが・・・。 ご存知でしたら是非おしえてください。 希望している経緯はWebアプリケーションのクラスを作成すると、コンテナのオブジェクトがないと動かない場合も多く、単体試験がやりにくいのです。 easymockなど色々ありますが、生成したオブジェクトを対象クラスに渡してあげる必要があるものが多く(staticメソッドは対象外とか)、テストのためにsetterメソッドを実装する必要があります。 個人的には単体試験をやりやすくするために、本番では使用しないメソッドになるけれど、上記のようなsetterメソッドを作成するのはよいと考えています。 依存性を少なくさせて(意味が違うかもしれませんが)、試験がしやすくなれば保守性もあがるし、バグの発生率も少なくなると思っています。 ただ人によっては本番で動かないメソッドがあるのはおかしいという人もいます(実際に言われました)。 確かにそういう考えもあるかと思いますし、以前は私もそう思っていました。 試験のためのメソッドをクラスに作成する考えについても(主にテスト用なのでprotectedで作成しています)、やめた方がいいなどのアドバイスを頂けると嬉しいです。

    • ベストアンサー
    • Java
  • [JS] private関数からオブジェクト参照

    JavaScriptにて外部から使用する関数をpublicに、内部的に使用するだけの関数をprivateにしたく、 <http://d.hatena.ne.jp/brazil/20051028/1130468761>や<http://www.findxfine.com/programming/javascript/59.html>を参考に以下のようにしてみました。 func1はtestクラス内からしか呼び出せず、privateになっており、 func2はtestクラス外からも呼び出せて、publicになっているようです。 しかし、func2からfunc1を呼び出した際に、func2の呼び出しもとのオブジェクトを参照しようとすると undefinedになってしまいます。 var a = new test(); //a.func1(); // これはprivateなのでエラー a.func2(); // こちらはpublicなのでOK function test(){ var self = this; // private variable var data1 = 1; // public variable this.data2 = 2; // private function function func1(){ console.log(data1); // 1を表示 console.log(this.data2); // これがundefinedとなってしまう } // public function this.func2 = function(){ console.log(data1); // 1を表示 console.log(this.data2); // 2を表示 func1(); }; } どのようにすれば、オブジェクト変数を参照でき、 クラス内でのみ使用可能なprivate関数を定義できるのでしょうか。

  • private変数を設定(Java)

    いろいろ試したのですが、よく分からないので質問します。 クラスaで private String sName; という属性と、 public void setsName(String sPassedName) { sName = sPassedName; } というメソッドがあり、 別のクラスで、 StringTokenizer st = new StringTokenizer("Test 123"); というのがあった時に、この「Test」をsNameに代入しようとしているのですが、 まず、 a aObject = new a(); と新しいaオブジェクトを作り aObject.setsName(st.nextToken()); とやったのですが、cannot resolve symbolの表示が出ています。 st.nextToken())ってStringだからキャストとかしなくていいと思ったのですが、何がまずいのでしょうか?

    • ベストアンサー
    • Java
  • private voidなメソッドはstatic コンテキストですか

    コンパイルエラーで、 「static コンテキストから参照することはできません」 と表示されます。 ソースにstaticという文字は有りません。 private voidなメソッドはstatic コンテキストですか? [Foo.java] import com.nttdocomo.ui.*; public class Foo extends IApplication {  public void start() {   Display.setCurrent(new MyPanel());  } } class MyPanel extends Panel {  private void e() {   Bar.DShow(Dialog.DIALOG_ERROR, "", "");  } } [Bar.java] import com.nttdocomo.ui.*; public class Bar {  public void DShow(int type, String title, String body) {   Dialog d = new Dialog(type, title);   d.setText(body);   d.show();  } }

    • ベストアンサー
    • Java
このQ&Aのポイント
  • 落雷停電のあと、Sonet光を利用しているがネット接続できなくなった。部屋の装置のPPPランプが消えており、再起動しても改善しない。マンションの共用部の再起動が必要と思われるが、サポートに連絡できず困っている。
  • 昨日の落雷停電後、Sonet光のネット接続ができなくなった。部屋の装置のPPPランプが消えており、電源再起動しても改善しない。共用部の設備の再起動が必要と思われるが、サポートに連絡できず不便を感じている。
  • Sonet光を利用しているが、昨日の落雷停電のあとネット接続ができなくなった。装置のPPPランプが消えたので、電源再起動しても改善しない。マンションの共用部の再起動が必要と思われるが、サポートに連絡できず不安だ。
回答を見る