▶ 다형성
: 사용법은 동일하지만 다양한 객체를 이용해 다양한 실행결과가 나오도록 하는 것
☆☆오버로딩(다중정의)☆☆
- 자바 다형성 구현기법 중의하나
- 정의: 같은메소드 이름으로 여러 개의 메소드를 정의하는 방법
- 규칙:
* 메소드의 이름(식별자)이 같아야한다.
* 메소드의 매개변수의 숫자가 다르거나, 타입이 달라야한다.
* 메소드의 매개변수 숫자, 타입 조합이 달라야한다.
* 메소드의 리턴타입, 접근지정자는 상관없다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class Overloading {
//메소드 이름은 같으나 매개변수는 다름 public void method() {
System.out.println("public void method()");
}
public void method(int a) {
System.out.println("public void method(int a)");
}
public void method(String msg) {
System.out.println("public void method(String msg)");
}
public void method(int a, int b) {
System.out.println("public void method(int a, int b)");
}
public void method(String a, String b) {
System.out.println("public void method(String a, String b)");
}
public void method(int a, String b) {
System.out.println("public void method(int a,String b)");
}
public void method(int a, int b, int c) {
System.out.println("public void method(int a, int b, int c)");
}
public void method(String a, int b, int c) {
System.out.println("public void method(String a, int b, int c)");
}
|
cs |
☆☆오버라이딩(재정의)☆☆
- 상속관계에서 발생하는 메소드의 재정의 기법
- 자바의 다형성 기법중의 하나
- 정의 : 부모클래스에 정의된 메소드와 동일한 메소드_이름,리턴타입,매개변수)를
자식클래스에 정의(재정의)하는것
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
class OverridingParent{
public void method1() {
System.out.println("OverridingParent.method1()");
}
public void method2() {
System.out.println("OverridingParent.method2()");
}
}
class OverridingChild extends OverridingParent{
public void method2() { //자식이 재정의한 자식의 것
System.out.println("-------재정의된 method2 start----------");
/*
* super
* - this와 같은 self 참조변수
* - this와 같은 주소를 가리킨다.
* - 재정의에 의해서 은폐된 메소드를 호출할때 사용
*/
super.method2(); //super는 부모메소드 호출
System.out.println("OverridingChild.method2()추가작업");
System.out.println("-------재정의된 method2 end------------");
// 재정의하면 자식에서 재정의된 메소드만 호출
}
public class OverridingParentChildMain {
public static void main(String[] args) {
OverridingChild oc = new OverridingChild();
oc.method1();
oc.method2(); //oc.method2()호출시에는 재정의된 메소드만 호출
oc.method3();
}
}
|
cs |
'JAVA' 카테고리의 다른 글
[JSP] MODEL 1 & MODEL 2(MVC) 차이 (0) | 2022.08.09 |
---|---|
[JAVA] 정적 제한자 static (0) | 2022.07.26 |
[OOP] 캡슐화 Encapsulation (0) | 2022.07.26 |
[OOP] 객체와 클래스 (클래스구성요소) (0) | 2022.07.26 |
[OOP] 객체지향 프로그래밍 (0) | 2022.07.26 |
댓글