728x90
반응형
728x90
반응형

오늘은 오버로딩과 오버라이딩의 차이점을 알아보도록 하겠습니다.

면접 질문에서 자주 나오는 유형의 질문이라고 하는데요.

자바의 다형성 특징을 나타내는 방법으로 오버로딩오버라이딩이 있습니다.


오버로딩 : 같은 이름의 메소드를 여러 개 가지면서 매개 변수를 다르게 정의하는 것

오버라이딩 : 상위 클래스(부모 클래스)가 갖고 있는 메소드(자식 클래스)를 하위 클래스에서 재정의해 사용하는 것


오버로딩(Overloading)에 대해 자세히 알아 보겠습니다.

-메소드 이름은 같다.

-오버로딩은 매개 변수 타입, 매개변수가 다르다.



오버로딩은 실제로 프로젝트를 진행하면 여러 개발자 분들과 같이 개발하기 때문에 오버로딩을

사용해 작성자와 사용자가 알아보기 쉽게 하여 개발의 효율성을 높이기 위해 사용합니다.


예제를 통해 알아보겠습니다.

class OverloadingTestClass{ void overloadingTest(){ System.out.println("매개변수가 없는 메소드"); } void overloadingTest(int a){ System.out.println("매개변수가 "+a+"인 메소드"); } void overloadingTest(int a, int b){ System.out.println("매개변수가 "+a+"와 "+b+"인 메소드"); } } public class OverloadingTestMain { public static void main(String[] args) { OverloadingTestClass oltc = new OverloadingTestClass(); oltc.overloadingTest(); oltc.overloadingTest(100); oltc.overloadingTest(100, 200); } }


결과는 다음과 같습니다.



사전과 비교하자면 끄다라는 단어가 있습니다. 끄다라는 단어를 통해 스위치를 끄다, 불을 끄다, 담배를 끄다

등 표현을 할 수 있는데요. 만약 끄다라는 단어를 정의하지 않았다면 위에 표현을 일일이 정의해야 하는 번거로움이

있습니다. 우리나라 사전이 지금도 두껍지만 두께의 양은 수 십 배로 많아 질 것입니다. 

조금이나마 이해가 되셨기를 바랍니다.ㅎㅎ


다음은 오버라이딩(Overriding)에 대해 자세히 알아 보겠습니다.

먼저 오버라이딩을 알기위해 상속이라는 개념을 알아야 하는데요.

상속이라는 의미는 부모님이 자식에서 재산을 상속하듯이 무언가를 물려준다는 뜻인데요.

프로그래밍에서도 의미가 비슷합니다.

-상속 관계에 있는 클래스 간에 같은 이름의 메소드를 정의하는 기술입니다.

-메소드 이름은 같다.

-오버라이딩은 매개 변수 타입과 매개변수가 같다.


예제를 통해 알아보겠습니다.

class Employee{
	String name;
	int age;
	
	public void overridingTest(){
		System.out.println("사원의 이름은 "+name+"이고 나이는"+age+"입니다.");
	}
}
class Manager extends Employee{
	String jobId;
	
	public void overridingTest(){
		System.out.println("사원의 이름은 "+name+"이고 나이는 "+age+"입니다.");
		System.out.println("그의 직업은 "+jobId+"입니다.");
	}
}

public class OverridingTestMain {
	public static void main(String[] args) {
		Manager shin = new Manager();
		shin.name="신자바";
		shin.age=27;
		shin.jobId ="웹 프로그래머";
		
		shin.overridingTest();
	}
}

결과는 다음과 같습니다.



Manager클래스에 employee클래스를 상속함으로써 name과 age변수를 따로 정의하지 않아도 객체 생성 후에

 값을 입력하는 데 문제가 없음을 확인할 수 있습니다.

overridingTest() 메소드를 실행하면 콘솔 창에 잘 출력됨을 확인할 수 있습니다.






728x90
반응형
728x90
반응형

+ Recent posts