Overloading
■ 정의
- 같은 이름의 메소드 여러개를 가지며 매개변수의 유형과 개수가 다르도록 하는 기술
■ 특징
- 메소드 이름 동일
- return형이 같아도 되고 달라도 됨
- 매개변수 갯수가 달라야 함
- 매개변수 갯수가 같을 경우, 데이터 타입이 달라야 함
■ 사용 예
package chap11;
class Person{
private int regiNum;
private int passNum;
Person(int rnum, int pnum){
regiNum = rnum;
passNum = pnum;
}
Person(int rnum){
regiNum = rnum;
passNum = 0;
}
void showPersonalInfo() {
System.out.println("주민등록 번호: " + regiNum);
if(passNum != 0)
System.out.println("여권 번호: " + passNum + "\n");
else
System.out.println("여권을 가지고 있지 않습니다.");
}
}
public class ConOverloading {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person jung = new Person(335577, 112233);
Person hong = new Person(775544);
jung.showPersonalInfo();
hong.showPersonalInfo();
}
}
Overriding
■ 정의
- 상속 관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술
■ 특징
- 오버라이딩 하고자 하는 메소드가 상위 클래스에 존재해야 함
- 메소드 이름이 같아야 함
- 매개변수 갯수, 매개변수의 자료형이 같아야 함
- return형이 같아야 함
- 상위 메소드와 동일하거나 내용이 추가되어야 함
■ 사용 예
package chap15;
class MobilePhone{
protected String number;
public MobilePhone(String num) {
number = num;
}
public void answer() {
System.out.println("Hi~ from " + number);
}
}
class SmartPhone extends MobilePhone{
private String androidVer;
public SmartPhone(String num, String ver) {
super(num);
androidVer = ver;
}
public void playApp() {
System.out.println("App is runnign in " + androidVer);
}
}
public class MobileSmartPhone {
public static void main(String[] args) {
// TODO Auto-generated method stub
SmartPhone phone = new SmartPhone("010-555-777", "Nougat");
phone.answer();
phone.playApp();
}
}
■ 정리
구분 | Overriding | Overloading |
리턴형 | 동일 | 달라도 됨 |
메소드명 | 동일 | 동일 |
매개변수 | 동일 | 달라야 됨 |
적용범위 | 상속관계 | 같은 클래스 |
'Java > TIL (Today I Learned)' 카테고리의 다른 글
[JAVA] contains() / replace() (0) | 2023.02.07 |
---|---|
[JAVA] StringBuilder (0) | 2023.02.06 |
[JAVA] EOF (End Of File) (0) | 2023.01.28 |
[JAVA] BufferedReader / BufferedWriter (0) | 2023.01.26 |
[JAVA] 이스케이프 시퀸스 (escape sequence) (0) | 2023.01.21 |
댓글