자바에서 다형성을 지원하는 방법으로 메소드 오버로딩(Overloading)과 오버라이딩(Overriding)이 있다.
간단하게 정의해보면 오버로딩은 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술이고, 오버라이딩은 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용하는 기술이다.
▶ 오버로딩(Overloading)
같은 이름의 함수를 여러 개 정의하고 매개변수의 자료형과 개수를 다르게 하여 다양한 호출을 가능하게 한다.
/* Overloading.java */
public class Overloading { void result() { //매개변수 없을 때 System.out.println("매개변수 없음"); } void result(int a, int b) { //int 형 매개변수 2개 System.out.println("매개변수는 " + a + "와 " + b); } void result(double d) { //double 형 매개변수 1개 System.out.println("매개변수는 " + d); } }
/* result.java */ public class result { public static void main(String[] args) { Overloading ol = new Overloading(); ol.result(); ol.result(10, 20); ol.result(10); ol.result(3.14); } }
실행 결과는 다음과 같다
▶ 오버라이딩(Overriding)
상위 클래스가 가지고 있는 멤버가 하위 클래스로 상속되는 것처럼 상위 클래스가 가지고 있는 메소드도 하위 클래스로 상속되어 하위 클래스에서 사용할 수 있다. 하지만 하위 클래스에서 메소드를 재정의해서 사용할 수 있다.
/* Employee.java */ public class Employee { public String name; public int age; public void print() { System.out.println("사원의 이름은 " + this.name + "이고, 나이는 " + this.age + "입니다."); } }
/* Manager.java */ //Employee 상속 public class Manager extends Employee{ String JobOfManage; //print() 메소드 오버라이딩 public void print() { System.out.println("사원의 이름은 " + this.name + "이고, 나이는 " + this.age + "입니다."); System.out.println("관리자 " + this.name + "은 " + this.JobOfManage + " 담당입니다."); } }
/* OverridngResult.java */ public class OverridingResult { public static void main(String[] args) { Manager manager = new Manager(); manager.name = "토파즈"; manager.age = 20; manager.JobOfManage = "기획팀 팀장"; manager.print(); } }
실행 결과는 다음과 같다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
[수치계산] 학생 점수 프로그램 (0) | 2018.09.13 |
---|---|
[수치계산] 음료 주문 프로그램 (0) | 2018.09.13 |
[Java] 소수의 개수 구하기 (2) | 2018.09.13 |
[Java] 타입 변환 (0) | 2017.10.01 |
[Java] 자바의 특징 (0) | 2017.10.01 |