자바기반응용프로그래밍 - 캐스팅, 오버라이딩

2022. 4. 13. 00:01·Language/JAVA

 

업캐스팅

 

서브 클래스 객체 타입 => 슈퍼 클래스 타입으로 변환

동일한 슈퍼 클래스를 상속받은 서브 클래스 객체들을 배열로 관리 가능

업캐스팅된 레퍼런스는 객체 내의 슈퍼 클래스 멤버만 접근 가능

 

 

class Person { … }
class Student extends Person { … }
Student s = new Student();
Person p = s; // 업캐스팅, 자동타입변환

 

 

다운캐스팅

 

슈퍼 클래스 객체 타입 => 서브 클래스 타입으로 변환

괄호 안에 변환할 타입 명시

 

class Person { … }
class Student extends Person { … }
...
Person p = new Student("이재문"); // 업캐스팅
…
Student s = (Student)p; // 다운캐스팅, (Student)의 타입 변환 표시 필요

 

 

instanceof 연산자

 

슈퍼 클래스는 여러 서브 클래스를 상속함

=> 업캐스팅된 레퍼런스로 객체 타입 판단 어려움

 

사용법: 객체레퍼런스 instanceof 클래스타입, 주로 if문의 조건식에 삽입

레퍼런스가 가리키는 객체 타입 식별, true/false의 boolean 값 리턴

 

 

메소드 오버라이딩(덮어쓰기)

 

슈퍼 클래스의 메소드를 서브 클래스에서 "재정의"

슈퍼 클래스와 메소드 이름, 매개변수 타입과 개수, 리턴 타입 등 모든 것 동일

동적 바인딩 : 슈퍼 클래스 무시하고, 서브 클래스에서 오버라이딩된 메소드 실행

자바에서 오버라이딩된 메소드가 있다면, 동적바인딩을 통해 오버라이딩된 메소드가 무조건 실행됨

 

 

오버라이딩과 super 키워드

 

서브 클래스에서, 슈퍼 클래스의 멤버 접근할 때 사용

정적 바인딩: 슈퍼 클래스의 메소드 호출

 

 

오버라이딩 vs 오버로딩

 

오버라이딩 오버로딩
같은 클래스 내 or 상속관계 내 같은 클래스 내
매개변수 동일해야 매개변수 타입이나 개수가 달라야
리턴타입 동일해야 리턴타입과 무관

 

 

 

 

저작자표시 (새창열림)

'Language > JAVA' 카테고리의 다른 글

자바기반응용프로그래밍 - 모듈과 패키지 기초  (0) 2022.04.14
자바기반응용프로그래밍 - 추상메소드, 추상클래스, 인터페이스  (0) 2022.04.14
자바기반응용프로그래밍 - 배열  (0) 2022.04.12
자바기반응용프로그래밍 - 상속  (0) 2022.04.11
자바기반응용프로그래밍 - 반복문  (0) 2022.04.11
'Language/JAVA' 카테고리의 다른 글
  • 자바기반응용프로그래밍 - 모듈과 패키지 기초
  • 자바기반응용프로그래밍 - 추상메소드, 추상클래스, 인터페이스
  • 자바기반응용프로그래밍 - 배열
  • 자바기반응용프로그래밍 - 상속
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • Web (16)
        • JavaScript (6)
        • TypeScript (1)
        • React (5)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (14)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (5)
        • Project (2)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • IT (4)
      • Statistics (11)
      • Book (4)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
    • 백준
    • 트위터
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    React
    BFS
    운영체제
    자바스크립트
    DP
    github
    파이썬
    OS
    BAEKJOON
    Java
    JavaScript
    생활코딩
    C++
    백준
    자바기반응용프로그래밍
    통계학
    그리디
    Python
    코드트리
    네트워크
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
abyss-s
자바기반응용프로그래밍 - 캐스팅, 오버라이딩
상단으로

티스토리툴바