[Java]OOPジェネレータ(Constructor)、ジェネレータthis()および参照変数this
13200 ワード
コンストラクション関数、コンストラクション関数this、および参照変数this
インスタンスが生成されるたびに呼び出される[インスタンス初期化メソッド](Instance Initialization Method)
//例:=オブジェクト、ivパッケージ
//インスタンス初期化:インスタンス変数に適切な値を格納インスタンスの生成時に実行されるタスク(iv初期化). ivの初期化を容易にするために、ジェネレータを作成します. すべてのクラスには1つ以上のコンストラクション関数が必要です.
1)ジェネレータの名前はクラスの名前と同じである必要があります.
デフォルトのコンストラクタ:
パラメータのない作成者
一つは入れない.
クラスを作成するときは、必ずデフォルトジェネレータを追加してください.
コンストラクション関数から他のコンストラクション関数を呼び出すために使用します.
他のジェネレータを呼び出す場合は、最初の行のみ使用できます.
インスタンス自体を指す参照変数.
インスタンスメソッドには、使用可能なインスタンスアドレスが格納されます.
領域変数(lv)とインスタンス変数(iv)の区別に使用
すべてのインスタンスメソッドに領域変数として存在します.
//コンストラクション関数this()と参照変数thisは関係のない概念ですが、違いますので混同しないでください
インスタンスが生成されるたびに呼び出される[インスタンス初期化メソッド](Instance Initialization Method)
//例:=オブジェクト、ivパッケージ
//インスタンス初期化:インスタンス変数に適切な値を格納
Card c=new Card();
//1. 연산자 new에 의해서 메모리에(Heap) Card 클래스의 인스턴스가 생성됨
//2. 생성자 Card()가 호출되어 수행됨
//3. 연산자 new의 결과로, 생성된 Card 인스턴스의 주소가 반환되어 참조변수 c에 저장됨
ジェネレータを作成する条件1)ジェネレータの名前はクラスの名前と同じである必要があります.
클래스이름(타입변수명, 타입변수명, ... ) {
//인스턴스 생성 시 수행될 코드
//주로 인스턴스 변수의 초기화 코드를 적는다.
}
//클래스 Card와 생성자 Card의 이름이 같다
class Card {
...
Card() { //매개변수 없는 생성자
//인스턴스 초기화 작업
}
Card(String kind, int number) { //매개변수 있는 생성자
//인스턴스 초기화 작업
}
}
2)ジェネレータは値を返していません.(voidは付けません.)デフォルトのコンストラクタ:
パラメータのない作成者
클래스이름() { } //기본 생성자
コンパイラは、コンストラクション関数が1つもない場合にのみ自動的に追加されます.一つは入れない.
クラスを作成するときは、必ずデフォルトジェネレータを追加してください.
//생성자 오류나는 예시
class Data_1 {
int value;
}
class Data_2{
int value;
Data_2(int x) { //매개변수가 있는 생성자
value=x;
}
}
class Ex6_11 {
public static void main(String[] args) {
Data_1 d1=new Data_1();
Data_2 d2=new Data_2(); //컴파일 에러 발생
}
}
//생성자 오류 해결방법 : Data_2의 기본 생성자를 추가해준다.
//class Data_1도 기본 생성자가 없지만 컴파일러가 하나를 자동으로 추가해준다.
class Data_1 {
int value;
}
class Data_2{
int value;
Data_2() { }
Data_2(int x) { //매개변수가 있는 생성자
value=x;
}
}
class Ex6_11 {
public static void main(String[] args) {
Data_1 d1=new Data_1();
Data_2 d2=new Data_2(); //컴파일 에러 해결
}
}
パラメータ付き作成者class Car {
String color;
String gearType;
int door;
Car() { } //기본 생성자
Car(String c, String g, int d) { //매개변수가 있는 생성자
color=c;
gearType=g;
door=d;
}
}
ジェネレータthis()コンストラクション関数から他のコンストラクション関数を呼び出すために使用します.
他のジェネレータを呼び出す場合は、最初の行のみ使用できます.
class Car2 {
String color;
String gearType;
int door;
Car2() {
//Car2("white", "auto", 4);
this("white", "auto", 4); //Car2(String color, String gearType, int door) 호출
}
Car2(String color) {
//Car2("white", "auto", 4);
this("white", "auto", 4); //Car2(String color, String gearType, int door) 호출
}
Car2(String color, String gearType, int door) {
this.color=color;
this.gearType=gearType;
this.door=door;
}
}
参照変数thisインスタンス自体を指す参照変数.
インスタンスメソッドには、使用可能なインスタンスアドレスが格納されます.
領域変数(lv)とインスタンス変数(iv)の区別に使用
すべてのインスタンスメソッドに領域変数として存在します.
//コンストラクション関数this()と参照変数thisは関係のない概念ですが、違いますので混同しないでください
Car(String color, String gearType, int door) {
//인스턴스변수(iv)에 this 붙여준다. this.color는 iv, color는 lv.
this.color=color;
this.gearType=gearType;
this.door=door;
}
Reference
この問題について([Java]OOPジェネレータ(Constructor)、ジェネレータthis()および参照変数this), 我々は、より多くの情報をここで見つけました https://velog.io/@jeong11/Java-OOP-constructorテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol