2015年3月4日水曜日

Javaの勉強 コンストラクタ

明示的にコンストラクタを書かなかった場合
コンストラクタを明示的に書かないと、裏で、引数なしのコンストラクタを作成し、
それが暗黙的に呼び出される。
さらに、親クラスがあれば、親クラスの引数なしコンストラクタを実行してくれる。

例として、以下のようなクラスを考えてみた。

人クラス

桃太郎クラス

■人クラス(Human.java)
public class Human {
 
 // コンストラクタ 
 public Human()
 {
  System.out.println("私は人として、生を受けました。");
 }
}
■桃太郎クラス(Momotaro.java)
public class MomoTaro extends Human  {

 public void GiveKibiDango()
 {
  System.out.println("きびだんご。どうぞ。");
 }
}
■メイン関数(Main.java)
public class Main{
  public static void main (String[] args) {
    
   MomoTaro mtaro = new MomoTaro();
   mtaro.GiveKibiDango();
  }
} 

■結果

たしかに、親クラスの引数なしコンストラクタが呼ばれた。
明示的にコンストラクタを書いた場合
書いたコンストラクタが呼ばれる。
親クラスのコンストラクタも勝手に呼ばれる。

2015年3月1日日曜日

Java で hello world (windowsです。)

やりたいこと
javaでHello worldをだすまでを簡単にまとめておきます。
しばらくやってないと、コンパイルのコマンドとか、実行方法とかすっかりわすれてしまうので、メモしておきます。

Step1.JDK のインストール
"JDK"でググって、それっぽいやつをダウンロードします。
※たぶん迷うことはないと思います。




Step2.環境変数を設定
"Java" "環境変数" でググるといっぱいでてきるので、詳細はそちらで。
JAVA_HOMEという変数を追加して、pathにjdkのbinフォルダを指定します。

※こっちは迷うかもしれないです。ググって、詳しいところを参考に、ちゃんとやったほうがよいかもです。


Step3.ソースコードを作る。
Hello.javaというファイルを作成し、下記のコードを貼り付けて、保存する。
常識なのかもしれませんが、ファイル名とクラス名が一緒でないと、コンパイルに失敗するので注意。
public class Hello{
  public static void main (String[] args) {
    System.out.println("Hello World!");
  }
} 

Step4.コンパイルして、実行する
コマンドプロンプトで、コンパイルは、javac ファイル名( javac Hello.java)とする。
プログラムの実行は、java クラス名( java hello)

[書籍]プログラミングAndroid を読んで 

プログラミングAndroidを読んで、勉強になったことをまとめて行こうかと思います。
随時更新予定。
2章 Java for Android
Javaの総まとめみたいな感じ。

○Javaでは、フィールド(メンバ変数)を初期化しなくても、してくれる。

○コンストラクタを定義しないと、裏でデフォルトコンストラクタと、スーパークラスの引数なしコンストラクタを呼んでくれるとのこと。

○すべてのクラスが継承しているObjectクラスってのがある。このクラスのメソッドについて、
 toString()・・・そのまま使うと、アドレスみたいなのを返すので、オーバーライドしたほうがよい。
 clone(), finalize()・・・使わなくてよい。
 hashcode(), equals・・・奥が深い。ちゃんと勉強しないとつかわないほうがよさそう。
 反射性/対称性...という性質を満たす必要があるそうで、実際どうやって実装するのかわかりませんでした。