자바의 상속 - 1

2022. 5. 4. 13:00·Study/Java
728x90
반응형

오늘은 자바에서 가장 중요한 것들 중 하나인 상속에 대해 적어보려 한다.

 

먼저 상속이 뭘까?

 

상속은 다른 클래스의 설계도를 가져와 새로운 기능을 추가하는 기법이라고 할 수 있겠다.

 

이 상속 관계에 대한 호칭은 언어마다 다른데 주로 사용되는 호칭을 몇 개 나열해보면

상위 - 하위

부모 - 자식

슈퍼 - 서브

정도가 있겠다.

 

자바에서 공식적으로 사용하는 호칭은 슈퍼 - 서브인데 개발자들은 부모 - 자식으로도 많이 얘기한다고 들었다.

 

상속받은 클래스(자식)의 객체를 만들면 자동으로 상속해준 클래스(부모)의 객체도 내부에 같이 생성된다.

 

이러다 보니 내가 상속받아온 클래스의 멤버를 마음대로 사용 가능하다.

 

하지만, 저번 글에서도 소개했듯이 객체지향 프로그래밍에서는 멤버 변수를 직접 .연산자를 통해 제어하는 것을 권장하지 않는다.

 

예제를 통해 더 자세하게 소개해보도록 하겠다.

public class First {

	//member변수
	int a;
	
	//member값을 출력하는 method
	void showFirst() {
		System.out.println("a : " + a);
	}
	
}

먼저 부모 클래스가 될 First class이다.

 

 

다음은 First를 상속받을 Second class이다.

public class Second extends First{

	//그냥 보면 아무 멤버도 없는 것처럼 보인다
	//상속받은 First class의 멤버를 이미 보유한 상태
	
	//멤버 변수 추가
	int b;
	
	//멤버 값 출력하는 메소드
	void showSecond() {
		System.out.println("b : " + b);
	}
	
	//상속받은 멤버까지 출력하는 메소드
	void show() {
		//부모 클래스의 멤버는 부모가 출력
		showFirst(); //상속받은 부모 클래스의 메소드를 마음대로 호출
		
		System.out.println("b : " + b);
		System.out.println();
	}
	
	//전달받은 값을 멤버 변수에 대입해주는 메소드
	void setMembers(int a, int b) {
		//매개변수 값을 멤버변수에 대입
		//this.a = a; //에러는 아니지만, a는 Second객체의 변수가 아니므로 this 키워드가 어색
		//자식 클래스에서 부모 클래스 객체의 멤버를 사용한다는 구분을 명확히 하기 위해 this키워드처럼 부모객체를 참조하는 특별한 키워드가 존재
		//super keyword : 부모 객체를 참조하는 특별한 키워드(참조변수)
		
		super.a = a;
		this.b = b;
	}
	
}
728x90
반응형
저작자표시 (새창열림)

'Study > Java' 카테고리의 다른 글

자바 클래스 안에 다른 클래스의 참조 변수가 있는 상황  (0) 2022.05.02
static 키워드  (0) 2022.05.01
자바의 생성자(Constructor)  (0) 2022.04.29
자바의 접근 제한자(Access Modifier)  (0) 2022.04.28
자바의 변수 종류  (0) 2022.03.25
'Study/Java' 카테고리의 다른 글
  • 자바 클래스 안에 다른 클래스의 참조 변수가 있는 상황
  • static 키워드
  • 자바의 생성자(Constructor)
  • 자바의 접근 제한자(Access Modifier)
BonusTrack02.dev
BonusTrack02.dev
공부, 일상
  • BonusTrack02.dev
    BonusTrack02.dev
    BonusTrack02.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (237)
      • Dev experience (85)
        • Android (84)
        • Kotlin (1)
      • Study (62)
        • Kotlin (26)
        • Swift (17)
        • Java (19)
      • 프로그래머스 (68)
      • 주저리주저리 (22)
        • 카페 (5)
        • 음식점 (4)
        • 컨퍼런스 (1)
        • 팝업스토어 (4)
        • 전시회 (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    MVVM
    ios
    SWIFT
    room
    databinding
    Observer
    배열
    Java
    CodeLab
    getNumericValue
    코틀린
    viewModelScope
    android
    aac
    코루틴
    Kotlin
    Material
    티스토리챌린지
    자바
    오블완
    jetpack
    스위프트
    ViewModel
    LiveData
    daterangepicker
    PCCE
    programmers
    coroutines
    안드로이드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BonusTrack02.dev
자바의 상속 - 1
상단으로

티스토리툴바