#インスタンス
クラスとは?(復習)
設計書のようなもの
・定義するもの
・状態(状況):変数(フィールド)
・振る舞い(動作):メソッド
- 設計書(クラス)から作成された実体(インスタンス)
- 複数の生成も可能
##インスタンス(コード生成)
クラス名 インスタンス変数名(自由) = new クラス名(引数)[コンストラクタ指定];
生成したインスタンスを変数に格納
ここで注目すべきは!!
クラス型(参照型)のインスタンス変数
Javaの全変数は静的型付けにより、クラス型の宣言を行った
##コンストラクタ
- インスタンスを生成するときに行う初期化処理をする特別なメソッド
- コンストラクタの特徴
- メソッド名はクラス名と同じ
- 戻り値なし
- 引数の異なるコンストラクタは複数あっても良い
- コンストラクタは省略可能
// Personクラス
public class Person {
public Person(){
age = 1;
}
public Person(int a){
age = a;
}
public Person(String a){
age = a;
}
public void printAge(){
System.out.println("私は"+age+"歳です");
}
}
}
// mainクラス
public static void main(String args[]){
Person p1 = new Person();
p1.printAge();
int num1 = 29;
Person p2 = new Person(num1){
p2.printAge();
}
String num2 = "29";
Person p3 = new Person(num2){
p3.printAge();
}
}
##static定義
staticフィールド、staticメソッドへのアクセス
- staticキーワードがついたフィールドやメソッドにはインスタンス生成しなくて、使える
内容 | 使い方 |
---|---|
staticメソッド使う | クラス名.メソッド名(引数) |
staticフィールドを使う | クラス名.フィールド名 |
###static定義の制限
- staticフィールド
- 変数の値を1つしか保持できない → 格納するたびに上書きされる
- staticメソッド
- staticメソッド内からは、同一クラス内のstaticが無いメソッドや、staticが無いフィールドを使えない
- staticメソッド内でインスタンスを作れば、アクセス可能
##クラス連携
- 他のパッケージのクラスを使う場合
- コードに直接「パッケージ名.クラス名」で指定
- import宣言で使う
- import 他のパッケージ名.クラス名;
- import パッケージ名.*(全てのクラス);