[TIL]Java-多形性
たけいせい
多形性とは親のタイプを指し、様々な形式のサブオブジェクトを生成、参照することができる.
Student student = new Student(); // 대신
Person student = new Student(); // 를 사용하면
Person[] people = {new Person(), new Student(), new Teacher(), ...}; // 배열관리를 통해 동일 작업을 쉽게 할수있다.
ダイナミックバインド
コンパイル時に呼び出す方法と実行時に呼び出す方法の柔軟な応用を指す.
データ型が
student.study();
という方法を呼び出すことはできない.鋳造オブジェクト
((Student)student).study(); // 해결!
((Teacher)teacher).study(); // 해결!
Student s2 = (Student) student;
s2.study(); // 코드가 실행 가능할까?
instanceof演算による判別対象
インタフェース
インタフェースは、実装されていないメソッドで構成されます.
public interface 인터페이스명 { // 인터페이스 선언
public final static Data_Type 상수명 = 상수의_값; // 상수 선언
public Return_Type 메소드명(파라미터1, 파라미터2, ...); // 추상 메소드 선언
}
インタフェース内部で宣言される変数は、publicfinal staticの無条件です.
インタフェース内部で宣言する方法は,体の抽象的な方法がない.
インプリメンテーションインタフェースのクラスでimplementsを使用してインプリメンテーション
public class 클래스명 implements 인터페이스명 {
// 인터페이스에 선언된 메소드 구현
}
内部、匿名クラス
内部クラスとは?
public class OuterClass { // 외부 클래스
class InnerClass {} // 내부 클래스
}
内部クラスのタイプは、宣言位置のタイプと同じです.有効範囲は性徴路変数と類似しており,比較的理解しやすい.
インスタンスクラス
ネストされたクラス
地域カテゴリ
宣言は
匿名クラス
ダイヤルバック
public class Sum {
interface OnMaxNumListner { // 인터 페이스 정의
void onMaxNumber(int number); // Sum 클래스 내부에 onMaxNumLisnter를 정의한다. 클래스를 따로 정의해도 크게 상관은 없다.
}
void setOnMaxNumListner(OnMaxNumListner listner) { //콜백함수 등록
this.listner = listner;
}
}
public static void main(String[] args) {
OnMaxNumListner listner = new OnMaxNumListner() { // OnMaxNumListner를 구현한 익명 클래스
@Override
public void onMaxNumNumber(int number) {
System.out.println(number);
}
}
Sum sum = new Sum();
sum.setOnMaxNumListner(listner);
}
Reference
この問題について([TIL]Java-多形性), 我々は、より多くの情報をここで見つけました https://velog.io/@kwonsc/TIL-Java-다형성テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol