-
오버로딩/오버라이딩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