03.継承からクラス作成と変換
サブクラスの作成プロセス
子クラスを作成するときは、まず親クラスを作成します.
new VIPCustomer()を呼び出すと、まずCustomer()が呼び出されます.
クラスが継承されている場合、子クラスの作成者は親クラスの作成者を呼び出す必要があります.
public Customer() {
customerGrade = "SILVER";
bonusRatio = 0.01;
System.out.println("Customer() 생성자 호출");
}
VIPCustomer.javapublic VIPCustomer() {
customerGrade = "VIP";
bonusRatio = 0.05;
salesRatio = 0.1;
System.out.println("VIPCustomer() 생성자 호출");
}
スーパーキー
子クラスの親の参照値
super()呼び出し親のデフォルトジェネレータ
サブクラスが親クラスの作成者を明示的に呼び出さない場合はsuper()を呼び出す
(親クラスのデフォルト作成者が存在する必要があります)
親にデフォルトのジェネレータがない場合(他のジェネレータがある場合)、サブクラスはsuperを使用します.
親クラスの作成者を明示的に呼び出す
superには作成された親インスタンスの参照値があるため、superを使用して親クラスにアクセスする方法またはメンバー変数を使用できます.
// 디폴트 생성자 없애고 매개 변수가 있는 생성자 추가
public Customer(int customerID, String customerName) {
this.customerID = customerID;
this.customerName = customerName;
customerGrade = "SILVER";
bonusRatio = 0.01;
System.out.println("Customer(int, String) 생성자 호출");
}
VIPCustomer.java// super를 이용하여 상위 클래스의 생성자 명시적으로 호출
public VIPCustomer(int customerID, String customerName) {
super(customerID, customerName);
customerGrade = "VIP";
bonusRatio = 0.05;
salesRatio = 0.1;
System.out.println("VIPCustomer(int, String) 생성자 호출");
}
CustomerTest.javapublic class CustomerTest {
public static void main(String[] args) {
Customer customerLee = new Customer(10010, "이순신");
customerLee.bonusPoint = 1000;
System.out.println(customerLee.showCustomerInfo());
VIPCustomer customerKim = new VIPCustomer(10020, "김유신");
customerKim.bonusPoint = 10000;
System.out.println(customerKim.showCustomerInfo());
}
}
インスタンスメモリに継承されたステータス
せいけいかん
変数を親として宣言し、サブクラスの作成者としてインスタンスを作成
Customer customerLee = new VIPCustomer();
親タイプの変数に子変数を代入します.
VIPCustomer vCustomer = new VIPCustomer();
addCustomer(vCustomer);
int addCustomer(Customer customer){
}
子クラスには親のタイプが含まれているため、親に暗黙的に変換できます.
継承関係では、すべてのサブクラスが親に変換されます(アップリンク)
(このキャラクターは成立しません)
成形遷移とメモリ
Customer vc = new VIPCustomer(); 中vcとは?
VIPCustomer()ジェネレータは、VIPCustomerクラスのすべてのメンバー変数のメモリを作成しました.
変数のタイプはCustomerなので、実際にアクセス可能な変数またはメソッドはCustomerの変数とメソッドです.
クラスの階層は複数のレベルです。
Humanは内部にPromateと哺乳類のタイプを含んでいる.
Primate pHumman = new Humman();
Mammal mHumman = new Humman();
Reference
この問題について(03.継承からクラス作成と変換), 我々は、より多くの情報をここで見つけました https://velog.io/@ldevlog/03.-상속에서-클래스-생성-과정과-형-변환テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol