1. 오버로딩 (Overloading)
같은 이름의 메소드를 여러개 가지며 매개변수의 유형, 갯수가 다르도록 하는 것
호출되는 매개변수의 갯수나 유형에 따라 매칭되어 함수를 실행함(리턴 타입의 유무는 영향을 미치지 않음)
static 예약어도 오버로딩이 가능함(오버로딩 하는 방식은 똑같음)
기능이 유사하거나 비슷한 경우에 메소드 이름을 같게 하여 나오는 결과만 다르게끔 할 때 사용함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
package kr.or.ksmart.A;
public class OverloadingTest {
public void test() {
System.out.println("매개변수 없음");
}
public void test(int a, int b) {
System.out.println("매개변수 " + a + "와 " + b);
}
public void test(double d) {
System.out.println("매개변수 " + d);
}
} |
cs |
1
2
3
4
5
6
7
8
9
10
11 |
package kr.or.ksmart.A;
public class OverloadingTest_Main {
public static void main(String[] args) {
OverloadingTest ot = new OverloadingTest();
ot.test();
ot.test(10);
ot.test(10, 20);
}
} |
cs |
OverlodingTest 클래스에서 test라는 중복되는 이름을 가진 메소드가 3개이지만, 매개변수 갯수, 인자가 다르기 때문에 main메소드에서 호출시 각각 다른 값을 리턴한다.
2. 오버라이딩 (Overriding)
부모 클래스가 가지고 있는 변수, 메소드를 자식 클래스에서 재정의하는 것 (함수의 원형은 부모 클래스와 일치해야 함)
이미 사용중인 클래스의 멤버 함수를 수정하는 경우 그 클래스를 건드리지 않고 update, upgrade 할 경우에만 사용
부모 클래스의 메소드를 호출시 super 키워드를 사용함
1
2
3
4
5
6
7
8
9
10
11
12 |
package kr.or.example.A;
public class Animal {
String name;
int age;
public void printPet() {
System.out.println("console> printPet() is called ...");
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
}
} |
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
package kr.or.example.A;
// Animal 클래스를 상속받은 Cat 클래스
public class Cat extends Animal {
String variety;
public void printPet() {
// super 키워드를 이용하여 부모 클래스인 Animal 클래스의 동명 메소드 printPet() 호출
super.printPet();
System.out.println("console> printPet() extends is called ...");
System.out.println("종류 : " + variety);
}
} |
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13 |
package kr.or.example.A;
public class Animal_Main {
public static void main(String[] args) {
Cat cat = new Cat();
cat.name = "양순이";
cat.age = 5;
cat.variety = "페르시안";
// variety() 메소드는 extends class 안에 있는 지역변수이므로 나중에 출력됨
cat.printPet();
}
} |
cs |
'BackEnd > Java' 카테고리의 다른 글
Java :: 상속(Inheritance) (0) | 2016.03.20 |
---|---|
Java :: 생성자(Constructor) (0) | 2016.03.18 |
Java :: 자바의 기본 (0) | 2016.03.18 |
Java :: 클래스 (0) | 2016.03.16 |
Java :: 클래스 - 도입 (0) | 2016.03.15 |