ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오버로딩/오버라이딩
    TIL(Today I Learned) 2022. 9. 26. 20:55

    오버로딩(Overloading)이란?
    서로 같은 이름의 메서드이면서 매개변수의 타입과 개수가 반드시 다르도록 하는 방식입니다. 

    오버로딩의 사용 이유
    동일한 기능을 하는 메서드를 하나의 이름으로 관리할 수 있다는 장점이 있습니다.

    대표적인 예로 println()이 있습니다.  

    println()은 출력이라는 기능을 하지만 반환형이 String일 때, int일 때, Object일 때와 같이 

    매개변수가 다양하게 선언될 수 있기 때문에 오버로딩에 적합한 예입니다.

    생성자 오버로딩(기본 생성자)이란?
    클래스를 생성하면 자동으로 기본 생성자를 만들어줍니다. 이때 오버로딩의 특성을 이용해서
    기본 생성자에 매개변수를 추가해줄 수 있습니다. 
    (만약 매개변수가 있는 생성자 메서드가 존재한다면 기본 생성자를 자동으로 만들어주지 
    않으므로 개발자가 따로 선언해줘야 합니다.)

     

    아래는 생성자 오버로딩의 예시 코드입니다.

    public class Person {
    	private int age;
        private String name;
    	
    	public Person() {} // 기본 생성자입니다.
        
        // 생성자 오버로딩입니다.
    	public Person(int age, String name) { 
    		this.age = age;
    		this.name = name;
    	}
    }

     

    오버로딩의 장점 
    메서드명을 통일화 할 수 있어서 소스코드의 가독성이 좋아집니다.
    다형성을 구현할 수 있습니다.
    메소드의 이름을 절약할 수 있습니다.

    오버로딩의 단점
    메서드 명이 동일해서 메서드의 기능 구분이 헷갈릴 수 있습니다.

     

    오버라이딩(Overriding)란?

    상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용합니다.

    (단, 메서드명, 매개변수 타입, 리턴 타입이 모두 동일해야 합니다.)
    (주의. 오버라이딩된 메서드의 접근권한(public, private..등)은 상위클래스의 메서드보다 범위가 더 넓거나 같아야합니다. 

    예를 들어 상위 클래스에서 protected로 접근 권한을 지정해놨는데, 하위 클래스에서 private로 지정할 수는 없습니다.)

     

    오버라이딩 사용 이유

    다형성을 위해 사용합니다.
    코드의 재사용성을 증진시키기 위해 사용합니다.

    만약 오버라이딩을 사용할 수 없다면 클래스 내에서 메서드들끼리 기능이 조금만 달라지더라도
    새로운 메서드를 만들어야 하기 때문에 재사용성이 떨어집니다.

    'TIL(Today I Learned)' 카테고리의 다른 글

    모듈/모듈화  (0) 2022.09.27
    자바 컴파일 흐름  (0) 2022.09.26
    다형성(Polymorphism)  (0) 2022.09.26
    JSP response 내장 객채(Implicit Object)  (0) 2022.09.25
    절대 경로와 상대 경로  (0) 2022.09.25
Designed by Tistory.