씨네
공부하는 개발자 강씨네
씨네
  • 분류 전체보기 (460)
    • Web (21)
      • HTML (11)
      • CSS (10)
    • JS 관련 (49)
      • JavaScript (27)
      • JQuery (22)
    • TS 관련 (15)
      • TypeScript (15)
    • NodeJS (7)
      • NodeJS (7)
    • 따라하며 배우는 시리즈 (23)
      • NodeJS & ReactJS Basic (23)
      • NodeJS & ReactJS Movie (0)
      • NodeJS & ReactJS Youtube (0)
      • NodeJS & ReactJS ChatBot (0)
    • SPA (14)
      • React (14)
      • Vue (0)
      • Anguler (0)
    • Java 관련 (118)
      • Java (52)
      • JDBC (6)
      • JSP & Servlet (18)
      • Spring Legecy (38)
      • SpringBoot (4)
    • Python (26)
      • Python (20)
      • PyMongo (1)
      • Django (5)
    • Git (24)
      • Github (24)
    • RDB (22)
      • Oracle (21)
      • MySQL (1)
    • NoSQL (5)
      • MongoDB (5)
    • OS (4)
      • Linux (4)
    • 빅데이터 (2)
      • hadoop (2)
    • IDE (20)
      • eclipse (11)
      • VSCODE (4)
      • VisualStudio (1)
      • IntelliJ (1)
      • PyCharm (1)
      • DBeaver (2)
    • Install (3)
      • Tomcat (1)
      • Docker (1)
      • Anaconda (1)
    • 오류&에러 (28)
      • TS (2)
      • NodeJS (7)
      • SQL (8)
      • Java (1)
      • Spring (4)
      • Git (6)
      • 기타 (0)
    • 알고리즘 (67)
      • 수열 (1)
      • 백준(backjoon) (39)
      • Programmers (27)
    • 자격증 (5)
      • SQLD (5)
    • 기타 (2)
    • IT유튜브로 지식쌓기 (2)

공지사항

인기 글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
씨네

공부하는 개발자 강씨네

[Java] 상속(inheritance)
Java 관련/Java

[Java] 상속(inheritance)

2021. 11. 3. 08:58
728x90


자바는 객체지향프로그래밍(OOP)라고 했습니다.

이런 객체지향언어의 대표 특징 4가지가 있는데 그중 2가지가 다형성과, 상속이고 나머지 2가지는 추상화와 캡슐화입니다.

이번 포스팅에서는 그 중 상속에 대해 중점으로 보면서 다형성도 같이 알아보겠습니다!

​

1. 상속

상속이란 클래스에 다른 클래스의 기능을 추가하거나 재정의 하는 것을 말합니다.

상속으로 다른 클래스에 있는 메소드와 필드를 물려받아 사용하게 되는 클래스를 만들 수 있게 됩니다.

이런 기존의 클래스 상속해 주는 클래스를 부모클래스, 슈퍼(super)클래스, 상위클래스, 기초클래스라고 하며 상속받는 클래스를 자식클래스, 하위클래, 파생클래스라고 부릅니다.

또한 상속을 위한 키워드는 extends입니다.

자식클래스와 부모클래스를 벤다이어그램으로 그려보면 부모클래스가 자식클래스에 포함되어 있다고 볼 수 있습니다.

그렇기 때문에 자식클래스에서는 부모클래스의 메소드를 가져다 쓸 수 있지만 부모클래스에서는 자식클래스의 메소드를 가져다 쓸 수가 없습니다.

​

​

Super.java

package com.test01;

public class Super {

  public Super() {
    System.out.println("Super");
  }

}

​

​

AA.java

package com.test01;

public class AA extends Super {

  public AA() {
    System.out.println("AA");
  }

}

​

BB.java

package com.test01;

public class BB extends Super {

  public BB() {
    System.out.println("BB");
  }

}

​

​

​

위 코드의 상속 상태는 다음과 같습니다.

AA클래스와 BB클래스 모두 부모클래스인 Super클래스를 참조할 수 있지만 AA클래스가 BB클래스를 참조할 수는 없고 BB클래스가 AA클래스를 참조할 수 없습니다.

또한 부모 클래스도 AA클래스와 BB클래스를 참조할 수 없습니다.

교집합 형태라고 보실 수 있습니다.

​

​

MTest.java

package com.test01;

public class MTest {

  public static void main(String[] args) {
    AA a = new AA();

    Super s = a; // Super s에 a가 가진 new AA()한 "instance"의 주소값 대입
    //BB b = (BB)s; // s에 담긴 AA instance를 BB로 형변환

    System.out.println(a.hashCode());
    System.out.println(s.hashCode());

  }

}

위의 main()메소드를 실행하면 다음과 같이 출력됩니다.

AA a = new AA();는 객체를 만들어서 해당 클래스의 생성자를 호출하게 되는데 상속받고 있는 Super클래스의 생성자 먼저 호출합니다.

Super s = a;는 a가 new AA()를 통해 가진 주솟값을 s에 대입해 주게 되는 것입니다.

주솟값을 출력해보면 같은 주솟값이 나옵니다.

728x90

'Java 관련 > Java' 카테고리의 다른 글

[Java] 상속과 다형성  (0) 2021.11.05
[Java] 다형성(polymorphism)  (0) 2021.11.04
[Java] 오버로딩(Overloading), 오버라이딩(Overriding)  (0) 2021.11.02
[Java] 클래스(class)  (0) 2021.11.01
[Java] java.lang.String api 활용하기  (0) 2021.10.31
    'Java 관련/Java' 카테고리의 다른 글
    • [Java] 상속과 다형성
    • [Java] 다형성(polymorphism)
    • [Java] 오버로딩(Overloading), 오버라이딩(Overriding)
    • [Java] 클래스(class)
    씨네
    씨네
    개발자 씨네가 공부하는 내용을 기록 겸 공유하는 블로그입니다!

    티스토리툴바