第15講 クラスの学習その2
第1話 publicとprivate-フィールド=変数について

最初のころ
import java.io.*;
class c{
  public static void main(String args[]){
          ・
          ・
          ・
のピンクの部分は、必要なお呪いだと思ってください、いったのを覚えているでしょうか。
そして、プログラミングは一気に理解しようとしないで、
多少理解できない部分があっても先を読み続ける姿勢多大切であるとも述べていたことをも思い出していただければと思います。
すでに、第13講のクラスの学習において
import java.io.*;
の意味は説明しました。関連するファイルをインポートする(取り込む)という意味でした。
また、voidの意味は関数の学習=第4講 メソッドすなわち関数を理解しようその1で学びました。
void
は空つまり何もないという意味でした。
これは値を返さないという意味です。
学習を始めた頃に、すべて説明したとしても結局は何のことがわからなかったでしょう。
しかし、今はかなり明確に意味が把握できるのではないでしょうか。
これはプログラミングの学習に限ったことではありませんが、
学習とは諦めないで先まで続けないと、途は開けないということです。
粘り強く学習を続ける・・・これしかプログラミンを修得する道はありません。
学問に王道なし、確かプラトンでしたか、主張していたと思います。
プログラミングにも王道はありません。
険しい道程を1人で登り続けるしかありません。
1人と申し上げました。
初心者がわかりやすいように、エスコートするのが私の役目ですが、
最終的には、学習とは自分で行うものです。
なぜなら、指導者があなたの代わりに理解してあげることはできないからです。
理解とは、自分の理解でしかありません。
誰もあなたの代わりに考えてあげることはできません。
あなたに頭を貸すことはできません。
粘り強く学習し自分のものとするのは、あなた自身です。
私は、皆さんが理解していく上での手助け以上のことはできません。
私は、教えるということは神にしかできないことだと思っています。
観念を外から注入することなど、人間にはできないからです。
もっとも私は、無神論ですから、
教えることなど不可能だという立場です。
私たち、教員の仕事は教えることではなく、
自分の頭で理解していくための援助を与えることであると思っています。
あなたが、プログラミングがかなりできるようになったとすれば、
それは私が教えたからではありません。
あなた自身が自分の力で修得したものです。
むしろ、私は数学においては教えてはならないと思っています。
ですから、算数段階において公式を与えることに反対しているのです。
道のり=速さ×時間
等の公式は、絶対に児童に与えてはなりません。
それは、児童の考える力を奪い、考えない習慣をもたせるだけであるからです。
右脳を使って自分で考える習慣が身についてから、公式を与え左脳を協働させるべきなのです。
算数と数学に分けたということは、非常に当を得たことであったのに、
算数に公式を密輸入したことで、算数は数学になり、
せっかくの明治の官僚たちが考えた目論見が消失する結果になっているのは、
残念であるとしかいいようがありません。
左脳一辺倒の悪しき数学教育になっている!
嘆かわしい現実があります。
その現状を変えるために、私は本サイトを立ち上げたのです。

済みません脱線してしまいました。
ですが、もし少しでも今日をお持ちの方は是非右脳数学のページもご覧いただければと思います。
さて、話を戻しましょう。
public static
の2つはまだ意味を説明していません。

本話は、public、privateについて説明します。
英和辞書で調べると、それぞれ
『公の』『私用の』という意味です。

それぞれの働きを知るために、
次の2つのファイルを作り、x.javaの方をコンパイルてみましょう。
<<p.java>>
class p{
  public int i;
  private int j;
}
<<x.java>>
import java.io.*;
class x{
  public static void main(String args[]){
    p p1=new p();
    p1.i=3;
    p1.j=5;
  }
}
するとコンパイル結果は、
入門
となります。
public int i;はエラーしなかったの対して、
private int j;の方はエラーしていることがわかります。
実はprivate(私的)の方は、
Java
クラス内でしか使用できないのです。
つまり、上図の赤い囲いの中でにみでしか使用できないのです。
それに対して、private(公)の方は、他のクラスでも使用できます。
ですから、class xにおいても使用できるのです。

試しに、次のようにp.javaを変更して、x.javaをコンパイルしてみましょう。
class p{
  int i;
  int j;
}

今度はエラーせずコンパイルできています。
Javaではデフォルトは、publicになっていることを示しています。
x.javaを次のように変更してうまく実行できることを確認しましょう。
import java.io.*;
class x{
  public static void main(String args[]){
    p p1=new p();
    p1.i=3;
    p1.j=5;
    System.out.println("p1.iの中身:"+p1.i+" p1.jの中身:"+p1.j);
  }
}
初心者
デフォルトは、publicであったとしてもpublicと明示する習慣をつけたいものです。

理由は、わかりやすいプログラムにするためです。
プログラムは、自分だけでなくいろいろな人が読みます。
いろいろな人の中には、初心者も含まれているわけですから、
やはり明示すべきでしょう。
エラーしないように改善しておきましょう。
<<p.java>>
class p{
  public int i;
  public int j;
}
<<x.java>>
import java.io.*;
class x{
  public static void main(String args[]){
    p p1=new p();
    p1.i=3;
    p1.j=5;
    System.out.println("p1.iの中身:"+p1.i+" p1.jの中身:"+p1.j);
  }
}

第14講第10話へ 第2話へ

戻る

VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部