-
오버라이딩, 오버로딩TIL 2024. 7. 2. 20:50
오버라이딩:
메소드 재정의
상속으로 인해 동일한 이름의 메소드가 여러개인 경우, 자식 클래스의 메소드만 사용된다.
class A{ void paint() { System.out.println("a") } } class B extends A{ void paint() { System.out.println("b") } } A a = new A(); B b = new B(); A a2 = new B(); a.print() // a출력 b.print() // b출력 a2.print() // b출력
A클래스의 인스턴스 a가 paint()를 호출하면, a가 출력된다
B클래스의 인스턴스 b가 오버라이딩된 paint()를 호출하면, b가 출력된다
A클래스 타입을가진 B클래스 a2가 오버라이딩된 paint()를 호출하면, b가 호출된다.
다만, a2는 A클래스의 타입을 가지고 있기때문에, A클래스에 정의된 메서드만 호출할 수 있고, 다만 B에서 오버라이딩된 메서드가 있다면, 그 오버라이딩된 메서드가 실행된다.
여기서 a2는 부모클래스 타입으로 정의되었고, 자식클래스의 생성자로 초기화되었다.
그렇기때문에 부모클래스내에서 정의된 메서드만 사용할 수 있으며, 자식클래스에서 재정의된(오버라이딩)된 메서드가 있다면 그 메서드를 사용하게된다.
오버로딩
메소드의 이름은 동일하지만, 파라미터의 타입, 개수가 다르면 서로 다른 메소드이다.
즉, 오버라이딩 되지않은 이름만 동일한 메서드이다.
'TIL' 카테고리의 다른 글
[TIL] PSQL-DB 데이터 복원하기 (pg_dumpall VS pg_dump 차이) (0) 2024.10.11 [TIL] 쿼리스트링 에러 (1) 2024.08.28 [TIL] 자료구조 - 배열, 연속리스트, 연결리스트 차이 (0) 2024.06.26 테스트 코드로 알아보는 DI (0) 2024.06.10 모듈 분리 / 서비스 코드 분리 기준 (0) 2024.06.10