overloading
이름은 같지만 시그니처(파라미터 수, 타입)는 다른 메소드를 중복으로 선언하는 것
overriding
부모 클래스의 메소드의 동작 방법을 변경하여 우선적으로 사용하는 것
같은 메소드라도 매개변수만 다르면 얼마든지 정의하고 사용 가능
특징
- 메소드 이름이 같아야 함!
- return 달라도 됨
- 파라미터 개수가 달라야 함
- 파라미터 개수 같을 시 데이터 타입 반드시 달라야함
public class Overloading {
public static void main(String[] args) {
overloading(1);
overloading(1,2);
overloading();
overloading("Hi");
}
static void overloading(int n) {
System.out.println(n);
}
static void overloading(int n, int m) {
System.out.println(n + m);
}
static void overloading() {
System.out.println("매개변수 없음");
}
static void overloading(String word) {
System.out.println(word);
}
}
상속 관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술
특징
- 오버라이드 하고 자 하는 메소드가 상위 클래스에 존재해야함
- 메소드 이름이 같아야 함
- 메소드 파라미터 개수, 파라미터 자료형이 같아야함
- 메소드 리턴형이 같아야 함
- 상위 메소드와 동일하거나 내용이 추가되어야 함
public class OverrridingParent {
String location;
String name;
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void print() {
System.out.println(this.name + "은 " + this.location + "의 시간을 사는 중이라 전해");
}
}
public class OverridingSon extends OverrridingParent{
String react;
public String getReact() {
return react;
}
public void setReact(String react) {
this.react = react;
}
public void print() {
System.out.println(this.name + "은 " + this.location + "의 시간을 사는 중이라 전해" + this.react);
}
}
public class Overrding {
public static void main(String[] args) {
OverridingSon yehoon = new OverridingSon();
yehoon.setName("Yehoon");
yehoon.setLocation("파리");
yehoon.setReact("!!!!!!!!!!!!!!!!!!!!");
yehoon.print();
}
}
// Yehoon은 파리의 시간을 사는 중이라 전해!!!!!!!!!!!!!!!!!!!!
오버라이딩을 통해 하나의 코드로 여러 객체를 처리 가능
overloading
overriding
아주 유익한 내용이네요!