본문 바로가기
TIL

내일배움캠프 6주차 Java 오버로딩, 오버라이드, 추상클래스

by 율량동박씨 2024. 5. 26.

오늘의 키워드

  • 오버로딩
  • 오버라이딩
  • 추상클래스

오늘의 내용

  • 오버로딩
    • 이름은 하나만 부여하고 매개 변수를 다르게 함으로써 메서드를 여러 개 만드는 것을 말한다
    • 다형성 : 여러 개의 클래스가 같은 메시지에 대해 각자의 방법으로 작용할 수 있는 행위인데 이걸 나타내는 게 오버로딩이다
  • 오버라이딩 
    • 오버로딩과 유사하게 수행되는데 부모클래스에 존재하는 메서드들이 서브클래스에 다른 작업을 수행할 수 있도록 동일한 함수명으로 재정의하는 것이다
    • 오버라이드의 목적은 서브클래스에 적합한 메서드로 만들기 위해서고 서브클래스에서 오버라이드를 못하게 하고 싶은 경우 부모클래스의 정의를 final로 지정하면 된다
    • 객체의 부모클래스를 참조하는 변수는 super이다
    • 부모클래스와 상속받은 클래스의 메서드명이 같은 경우 부모클래스의 메서드가 감추어지며 부모클래스에 접근하기 위해선 super를 사용해야 한다
    • 파생된 클래스에서 부모클래스의 메서드를 오버라이드 하는 경우 부모클래스와 같은 메서드를 호출하는 경우에도 사용한다
    • static으로 선언된 클래스의 메서드는 오버라이딩을 못하고 this나 super도 사용할 수 없다
    • 부모클래스와 상속받는 서브클래스에 내에서 static메서드로 함수를 새로 정의하면 상위 클래스의 메서드를 감추를 효과가 있다
    • 클래스 간의 메서드 이름, 리턴형, 파라미터 수나 형이 완전히 일치해야한다
    • 클래스간 반드시 상속관계가 있어야 한다
    • 같은 메서드이나 선언부가 하는 일이 구현부가 하는 일과 다르다
    • 접근 제한자는 상관없지만 오버라이딩된 서브클래스의 메서드 접근제어한자는 부모클래스의 메서드 접근제한자보다 범위가 크거나 같아야 한다
  • 오버라이딩과 오버로딩의 구분
    • 오버로딩은 한 클래스 내에서 같은 이름의 메서드를 재정의하는 것이고 오버라이딩은 부모클래스에 정의되어 있는 메서드를 서브클래스에서 재정의하는 것이다
  • 추상클래스
    • 처리 내용을 지정하지 않고 호출 방법만 정의한 메서드를 추상 메서드라 하는데 서브클래스의 공통된 특성을 추출해 묘사하기 위한 추상 메서드를 가진 클래스를 말한다
    • abstract클래스는 선언은 되지만 실행문이 없는 하나 이상의 추상 메서드로 구성된다
    • 생성자, static메서드와 private 메서드는 추상화할 수 없다
    • abstract 메서드를 가지는 클래스는 반드시 abstract클래스로 선언되어야 한다
    • abstract클래스는 객체를 생성할 수 없다
    • 추상클래스를 사용하기 위해서는 서브클래스를 파생시켜 추상메서드에 대응하는 메서드를 오버라이드한다
    • 추상클래스는 추상 메서드를 가지고 있어야 한다
    • 서브클래스는 추상 부모 클래스로부터 상속받는다
    • 서브클래스는 추상 부모클래스의 명령문이 없는 메서드를 모두 메서드 재정의 형태로 구현해 body부분을 생성한다
    • 서브클래스는 완전한 클래스이므로 객체를 생성할 수 있다

오늘의 회고

  • 14시간 정도 되는 강의를 다 들으니 심적인 여유가 생겨서 오랜만에 Java책을 봤다 많이는 못 봤지만 Spring을 하다 보니까 Java에 대한 기억이 사라진 기분이 든다...