신나는 자바 공부시간.. 작년에 프로그래밍 입문 시험을 중점적으로 +_+
풀어보던 도중에.. 아무래도 포스팅 하면서 공부하는게 좋겠다.. 싶어서.. 시작합니다.
먼저 OOP를 공부하면서 Overloading과 Override를 만나게 되는데요.. 접두어가 'Over' 라서 두 메카니즘의 관계가 있을것이라고 생각을 할 수 있습니다만... 전혀 관련이 없다네용 ^^;; 각각의 컨셉에 대해서 간략하게 알아보도록 하겠습니다.
Overloading
:중복메서드, 메소드명은 같지만 매개변수의 개수, 타입 둘중에 한개 이상 다를 경우 성립됨
public class OverloadingTest {
static void print(int x){
System.out.println(x);
}
static void print(int x, int y){
System.out.println(x);
System.out.println(y);
}
public static void main(String[] args) {
// Parameter의 Type이 다른경우 : String과 integer
String object = "test";
System.out.println(object);
int integer = 0;
System.out.println(integer);
// Parameter의 개수가 다른 경우 : 1개인 경우, 2개인 경우
int integer2 = 1;
OverloadingTest.print(integer);
OverloadingTest.print(integer, integer2);
}
}
static void print(int x){
System.out.println(x);
}
static void print(int x, int y){
System.out.println(x);
System.out.println(y);
}
public static void main(String[] args) {
// Parameter의 Type이 다른경우 : String과 integer
String object = "test";
System.out.println(object);
int integer = 0;
System.out.println(integer);
// Parameter의 개수가 다른 경우 : 1개인 경우, 2개인 경우
int integer2 = 1;
OverloadingTest.print(integer);
OverloadingTest.print(integer, integer2);
}
}
Overriding
: 메소드의 재정의, 상속에서의 부모의 메서드와 같은 이름으로 자식 클래스에서 재정의하여 사용한다.
public class Mother {
static void love(){
System.out.println("사랑한다");
}
}
public class Children extends Mother{
//@Override
static void love(){
System.out.println("사랑해요 엄마");
}
}
public class OverrideTest {
public static void main(String[] args) {
Mother.love();
Children.love();
}
}
<Console>
사랑한다
사랑해요 엄마
static void love(){
System.out.println("사랑한다");
}
}
public class Children extends Mother{
//@Override
static void love(){
System.out.println("사랑해요 엄마");
}
}
public class OverrideTest {
public static void main(String[] args) {
Mother.love();
Children.love();
}
}
<Console>
사랑한다
사랑해요 엄마