JAVA 는 다형성을 위해 오버로딩과 오버라이딩을 지원합니다.
다양한 형태를 가질 수 있다 는 것을 다형성이라 칭합니다.
오버로딩 ( overloading )
같은 이름의 메소드에 매개변수의 유형 혹은 개수가 다른 경우를 의미합니다.
$ cat mozi.java public class mozi { public static void main(String[] args) { overloading(2018, 07); overloading("Mozi", 2018); overloading(2018, "Tistory"); overloading(28); } public static void overloading(int a, int b){ System.out.println("First Method : " + a + ", " + b); } public static void overloading(String a, int b){ System.out.println("Second Method : " + a + ", " + b); } public static void overloading(int a, String b){ System.out.println("Third Method : " + a + ", " + b); } public static void overloading(int a){ System.out.println("Fourth Method : " + a); } }
$ java mozi First Method : 2018, 7 Second Method : Mozi, 2018 Third Method : 2018, Tistory Fourth Method : 28
오버라이딩 ( overriding )
상위 클래스를 상속받은 하위클래스가 함수를 재정의 해서 사용하는 경우를 의미합니다.
$ cat mozi.java public class mozi { public static void main(String[] args) { Parent p = new Parent(); p.name="Mozi Tistory"; p.year=2018; p.overriding(); Child c = new Child(); c.blog="Tistory"; c.name="Mozi"; c.year=2018; c.overriding(); } } class Parent { public String name; public int year; public void overriding(){ System.out.println("Parent Class " + name + ", " + year); } } class Child extends Parent { public String blog; public void overriding(){ super.overriding(); System.out.println("Child Class " + blog + ", Parent Class " + name + ", " + year); } }
$ java mozi Parent Class Mozi Tistory, 2018 Parent Class Mozi, 2018 Child Class Tistory, Parent Class Mozi, 2018
Child 클래스(자식클래스)에서 Parent 클래스(부모클래스)의 함수 및 변수를 사용할 수 있는 이유는 extends 로 상속받았기 때문이며,
Child 클래스에서 함수 혹은 변수를 찾을 수 없는 경우, Parent 클래스에서 값을 참조하게 됩니다.
super 함수에 대해서는 다른 포스팅에서 설명드리겠습니다.
'Computer Language > JAVA' 카테고리의 다른 글
[JAVA] Eclipse 다운로드 및 설치하기, 자바 프로그램 테스트 하기 (0) | 2020.10.25 |
---|---|
[JAVA] OpenJDK 다운로드 및 설치하기 (JDK 다운 및 설치하기, JDK 란, 환경변수 잡는법) (0) | 2020.10.25 |
[JAVA] currentTimeMillis, nanoTime 소스 수행 시간 차이 계산하기 (0) | 2018.06.28 |
[JAVA] JSON 형식의 파일 읽어오기 (0) | 2018.06.27 |
[JAVA] 멀티스레드 구현하기, Multi Thread 사용하기 (0) | 2018.06.27 |