자바의 특징으로 다형성이 있습니다.
다형성은 객체를 다향한 형태로 사용하고 관리할 수 있는 자바의 대표적인 특징입니다.
OverLoading (오버로딩)
자바에서는 입력항목(매개변수)이 다른 경우 동일한 이름의 메소드를 만들 수 있는데, 이를 메소드 오버로딩이라고 합니다.
하나의 객체에서 이름이 같은 메소드를 여러개 정의하여 사용할 수 있습니다.
class HelloJava {
public void hello() {
System.out.println("hello()");
}
public void hello(int i) {
System.out.println("hello(int i)");
}
public void hello(String str) {
System.out.println("hello(String str)");
}
}
public class Main {
public static void main(String[] args) {
HelloJava hi = new HelloJava();
hi.hello();
// hello()
hi.hello(10);
// hello(int i)
hi.hello("Hello");
// hello(String str)
}
}
OverRiding (오버라이딩)
자식클래스의 메소드가 부모 클래스의 메소드를 다시 정의하고 덮어써서 사용할 수 있는데, 이를 메소드 오버라이딩이라고 합니다.
public class Parent {
public void sayHello() {
System.out.println("Parent say Hello!");
}
public void call() {
System.out.println("Parent call");
}
}
public class Son extends Parent {
public void sayHello() {
System.out.println("Son say Hello!");
}
public void call() {
System.out.println("Son call");
}
}
public class Daughter extends Parent {
public void sayHello() {
System.out.println("Daughter say Hello!");
}
public void call() {
System.out.println("Daughter call");
}
}
public class Main {
public static void main(String[] args) {
Parent pp = new Parent();
pp.sayHello();
// Parent say Hello!
pp.call();
// Parent call
Son ss = new Son();
ss.sayHello();
// Son say Hello!
ss.call();
// Son call
Daughter dd = new Daughter();
dd.sayHello();
// Daughter say Hello!
dd.call();
// Daughter call
}
}
오버로딩, 오버라이딩의 조건
구분 | 오버로딩 | 오버라이딩 |
---|---|---|
메소드 이름 | 동일 | 동일 |
매개변수 타입 | 다름 | 동일 |
리턴 타입 | 상관없음 | 동일 |
'Language > Java' 카테고리의 다른 글
Java serialVersionUID 사용이유 (0) | 2019.03.09 |
---|---|
Java String... 은 무엇인가? (1) | 2019.03.08 |
Java UUID 사용하기 (1) | 2019.03.07 |
try-catch-finally의 기본형태와 return (0) | 2019.02.28 |
Java에서의 call by value, call by reference (0) | 2019.02.23 |