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 란, 환경변수 잡는법) (2) | 2020.10.25 |
| [JAVA] currentTimeMillis, nanoTime 소스 수행 시간 차이 계산하기 (0) | 2018.06.28 |
| [JAVA] JSON 형식의 파일 읽어오기 (0) | 2018.06.27 |
| [JAVA] 멀티스레드 구현하기, Multi Thread 사용하기 (0) | 2018.06.27 |