[TIL]多形性:使いやすい
※本書は、以下の書籍を学習して整理したものです.
📚 Javaオブジェクト向けSpringの入門原理を理解する
親クラスのメソッドなどのメソッド名、パラメータのリスト(など)
オーバーロード-繰り返し定義:同じメソッド名、異なるパラメータリスト
Animal.java
Penguinクラスは親AnimalクラスのshowName()メソッドを上書きし、showName(yourName:String)メソッド(繰り返し定義)を上書きします.
8行目の
9行
15行目では、showName()はAnimalのshowName()を実行するようですが、Penguinオブジェクトによって再定義されたshowName()メソッドが実行されます.
📌親クラスタイプのオブジェクトが変数を参照する場合でも、子クラスはオーバーライド(再定義)メソッドを呼び出します.
📚 Javaオブジェクト向けSpringの入門原理を理解する
オーバーロード
オーバーライド(再定義)
親クラスのメソッドなどのメソッド名、パラメータのリスト(など)
かふか
オーバーロード-繰り返し定義:同じメソッド名、異なるパラメータリスト
例を見てみましょう。
Animal.java
public class Animal {
public String name;
public void showName() {
System.out.println("안녕 나는" + name +"야");
}
}
Penguin.java1 public class Penguin extends Animal{
2 public String habitat;
3
4 public void showHabitat() {
5 System.out.println(name + "는" + habitat + "에 살아");
6 }
7 //오버라이딩 - 재정의: 상위클래스의 메서드와 같은 메서드 이름, 같은 인자 리스트
8 public void showName() {
9 System.out.println("어머 내 이름은 알아서 뭐하게요?);
10 }
11
12 //오버로딩 - 중복정의 : 같은 메서드 이름, 다른 인자 리스트
13 public void showName(String yourName) {
14 System.out.println(yourName + "안녕, 나는" + name + "라고해");
15 }
16 }
Driver.java 1 public class Driver {
2 public static void main(String[] args) {
3 Penguin pororo = new Penguin();
4
5 pororo.name = "뽀로로";
6 pororo.habitat = "남극";
7
8 pororo.showName();
9 pororo.showName("초보람보");
10 pororo.showHabitat();
11
12 Animal pingu = new Penguin();
13
14 pingu.name = "핑구";
15 pingu.showName();
16 }
17 }
実行結果어머 내이름은 알아서 뭐하게요?
초보람보 안녕, 나는 뽀로로라고 해
뽀로로는 남극에 살아
어머 내 이름은 알아서 뭐하게요?
Driver.Java 3行目Penguin pororo = new Penguin();
を実行後、Tメモリを使用Penguinクラスは親AnimalクラスのshowName()メソッドを上書きし、showName(yourName:String)メソッド(繰り返し定義)を上書きします.
8行目の
pororo.showName();
セクションを実行すると、Animalオブジェクト上のshowName()メソッドがPenguinオブジェクト上のshowName()メソッドによって隠されているため、再定義されたshowName()メソッドが呼び出されます.9行
pororo.showName("초보람보");
のセクションを実行し、showNameメソッドを呼び出します.15行目では、showName()はAnimalのshowName()を実行するようですが、Penguinオブジェクトによって再定義されたshowName()メソッドが実行されます.
Reference
この問題について([TIL]多形性:使いやすい), 我々は、より多くの情報をここで見つけました https://velog.io/@gaya309/TIL-다형성-사용편의성テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol