CH3COOH(酢酸)のさくっと393

VB.NET(VS2003)でお仕事中.Windows Mobile大好きです。

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  413  : 記事  0  : コメント  7803  : トラックバック  93

ニュース

CH3COOH(酢酸)の実験室 or SOFTBUILD

書庫

日記カテゴリ

クラス

クラスを宣言する

class HogeCls {
    // フィールド、コンストラクタ、メソッドの宣言
}

class HogeCls extends PiyoSuperCls inplements LoliInterface {
    // フィールド、コンストラクタ、メソッドの宣言
}

メンバー変数を宣言する

アクセス修飾子

メソッドを定義する

メソッドの命名

違和感がありますがメソッドの命名規則は、Camel形式が一般的な様です。

メソッドのオーバーロード

Javaはメソッドのオーバーロードをサポートしている為、シグネクチャが異なるメソッドを区別することが可能です。

クラスのコンストラクタを作る

スーパークラスの指定がなかった場合、暗黙的にクラスObjectがスーパークラスとなります。このクラスObjectは、引数なしのコンストラクタを持っています。

メソッドやコンストラクタに情報を渡す

パラメータの型

任意の数の引数

省略記号(...)を使う事でメソッドを呼び出す事が出来ます。

private static void varArgsFunc(int... varArgs)
{
    System.out.print(varArgs.length + ":");
    for(int i : varArgs)
    {
        System.out.print(i + ",");
    }
    System.out.println();
}

varArgsFunc();          // 0:
varArgsFunc(3);         // 1:3,
varArgsFunc(4, 5, 6);   // 3:4,5,6,

パラメータの名前

基本データ型の引数を渡す

参照型の引数を渡す

オブジェクト

オブジェクトを生成する

オブジェクトを参照する変数宣言する

クラスをインスタンス化する

オブジェクトを初期化する

オブジェクトを使う

オブジェクトのフィールドを参照する

オブジェクトのメソッドを呼び出す

ガベージコレクタ

脳内でどうしてもガレージコレクタに変換されてしまう……ガレキ自重。

クラス詳説

メソッドから値を返す

クラス階層と戻り型

キーワードthisを使う

フィールドとthis

コンストラクタとthis

コンストラクタから別のコンストラクタを呼びだすためにもthisが使えます。

public class HogeClass {
    private int x, y;
    private int tanaka, sato;
    
    public HogeClass()
    {
        this(0, 0, 0, 0);
    }
    
    public HogeClass(int x, int y, int tanaka, int sato)
    {
        this.x = x;
        this.y = y;
        this.tanaka = tanaka;
        this.sato = sato;
    }
}

明示的コンストラクタ呼び出しと言います。

クラスのメンバーへのアクセスを制限する

制限の強度順は強い順から、private、アクセス修飾子無し、protected、public。

privateは、同一クラス内からしかアクセス出来ない。
アクセス修飾子無しは、privateとは等価ではなく、同一パッケージ内のクラスであればアクセスが可能である。
protectedは、パッケージが異なっていても継承すればアクセス可能である。
publicは、何でもOK。

特に理由のない限りprivateを使います。また、定数を除いてpublicなフィールドは避けます。

インスタンスメンバーとクラスメンバー

クラス変数

すべてのオブジェクトに共通なstaticなフィールドは、クラス変数と呼ばれる。

クラスメソッド

修飾子staticを宣言に持った場合、そのクラスのインスタンスを生成せずに、メソッド呼び出しを行うことが出来ます。

一般的な用途としては、staticフィールドにアクセスする事。

定数

フィールドを初期化する

static初期化ブロック

staticフィールドを初期化する際には、static初期化ブロックが使用できます。

public class Main {

    static int hoge;
    static int hoge2;

    public static void main(String[] args) {
        System.out.println("hello world");
    }

    static {
        hoge2 = 5;
    }

    static {
        hoge = 9;
    }
}

static初期化ブロックは、コードの上に配置されているものから順に実行されますので、先頭のhoge,hoge2の宣言順には関係なく、hoge2,hogeの順で初期化される。

インタスタンスメンバーの初期化

public class HogeClass {
    private int hoge;

    {
        hoge = 5;
    }
}

finalメソッドはサブクラスでオーバーライドできません。第5章で説明して頂けるようです

public class HogeClass {
    private int hoge = initHoge();

    protected final int initHoge() {
        return 5;
    }
}

クラスとオブジェクトのまとめ

入れ子のクラス

クラスの中にクラスを定義する事が出来ます。入れ子の暮らす(nested class)と呼ぶ。

public class HogeClass {
    
    void hoge()
    {
        InnerClass innerCls = new InnerClass();

        // 例えprivateであってもアクセス出来る
        int aa = innerCls.hogePrivate;
    }

    class InnerClass {
        private int hogePrivate = 5;
        protected int hogeProtected = 6;
        public int hogePublic = 7;
    }
}

入れ子になっているクラスは、内部クラス(InnerClass)と呼ぶ。

なぜ入れ子のクラスを使うのか

  • クラスを合理的にグループ化
  • カプセル化を促進
  • コードの理解とメンテナンスが容易

staticな入れ子のクラス

内部クラス

ローカル内部クラスと匿名内部クラス

メソッド本体の中で名前無しで内部クラスを宣言する事が出来て、匿名内部クラスと呼ばれます。

修飾子

入れ子のクラスのまとめ

ドキュメンテーション

コンパイラが使用する注釈

注釈の処理

雑感

アクセス修飾子にfriendって居ませんでしたっけ。C++だっけな……
投稿日時 : 2008年7月26日 16:57

コメント

No comments posted yet.

Post Feedback

タイトル
名前
Url:
コメント