본문 바로가기
Java/TIL (Today I Learned)

[JAVA] Overloading / Overriding

by 정재인 2023. 1. 30.
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();
	}

}

<윤성우의 열혈 Java 프로그래밍>


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();
	}

}

<윤성우의 열혈 Java 프로그래밍>

 


 정리

구분 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

댓글