김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자
  • 코딩공부 #자바공부
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자
  • httperror
  • 백앤드
  • http에러메세지
  • web.xml수정
  • ErrorPage
  • 풀스택
  • 자바
  • 코딩공부
  • 프론트앤드
  • 개발자
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • 자바공부
  • 코딩
  • HTML공부
  • 객체지향프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환

맨땅에 코딩

⁂ Java/: 기본 익히기

[JAVA] #7-1 상속(Inheritance)

2022. 9. 14. 11:51

1. 왜 상속을 하지?

 

 우리가 상속을 받는 이유가 뭘까?

 남들이 가진 것들이 내게 필요하기 때문이다.

 

 이처럼 프로그래밍에서도 다른 곳의 데이터들을 굳이 새로 또 생성하는 것이 아니라 가져올 수 있게 해준다면 편리하게 사용을 할 수 있기 때문에 상속이란 개념이 생겨났다.

 그래서 굳이 자바 뿐만이 아니라 다른 프로그래밍 언어에서도 이러한 개념들은 있다.

 

 이 상속의 개념 안에서 사용되는 용어들은 아래와 같다.

 - 재활용

 - 부모와 자식

 - 조상과 후손(파생)

 - super class와 sub class

 

 

2. 상속의 문법과 형식

 

1) 문법

 extends(확장), implements(구현)

 

2) 형식

자식 extends 부모 {}

 

 

3. 상속의 이해

EE는 틀린 문법이다(다중 상속이 안된다)

 

1) 상속의 이해

 위의 그림을 보면 AA 클래스와 BB 클래스가 있다.

 AA 클래스에는 one() 과 two() 라는 매서드가 있다.

 BB 클래스는 AA클래스를 상속받은 뒤 three() 매서드를 갖고 있따.

 이 때 BB 클래스가 사용할 수 있는 매서드는 총 3가지이다.

 이러한 흐름으로 CC는 총 4가지의 매서드를 사용할 수 있다.

 

 AA, BB, CC 클래스의 관계는

 AA-BB : 부모 - 자식

 BB-CC : 부모 - 자식

 AA-CC : 조상 - 후손

 

2) 다중 상속은 안된다 

 하지만 DD와 EE를 보자.

 EE는 DD의 값을 가져오지만 또 AA의 값을 가져온다고 한다.

 이 때 EE 클래스는 오류가 난다.

 전혀 다른 두 가지의 클래스를 상속해오는 것은 불가능 하기 때문이다.

 

3) 코드로 구현해서 확인해보기

 위의 그림을 코드로 구현해서 확인해보자.

package oop0914;

// 종단 클래스는 상속받을 수 없다
// final class AA{}

class AA{
	private void zero() {} // 상속되지 않음
	public void one() {
		System.out.println("AA.one()...");
	}
	public void two() {
		System.out.println("AA.two()...");
	}
} // class end

class BB extends AA{ // 자식 클래스 BB, 부모 클래스 AA
	public void three() {
		System.out.println("BB.three()...");
	}
} // class end

class CC extends BB{
	public void four() {
		System.out.println("CC.four()...");
	}
} // class end

/*
에러, 클래스간의 상속은 단일 상속만 가능하다
class DD{
	public void five() {
		System.out.println("DD.five()...");
	}
	public void six() {
		System.out.println("DD.six()...");
	}
} // class end

class EE extends AA, DD{} // class end
*/

public class Test03_sangsok {

	public static void main(String[] args) {
		// 상속 Inheritance
		/*
			- 재활용
			- 부모와 자식, 조상과 후손(파생), super class와 sub class
			- 문법 : extends(확장), implements(구현)
			- 형식) 자식 extends 부모 {}
			
		 */
		
		AA aa = new AA();
		aa.one();
		aa.two();
		//aa.zero(); 에러. private 속성은 클래스 내부에서만 접근 가능하다
		System.out.println("---------------------");
		
		BB bb = new BB();
		bb.three();
		bb.one();
		bb.two();
		//bb.zero(); 에러. private 속성은 상속되지 않는다
		System.out.println("---------------------");
		
		CC cc = new CC();
		cc.four();
		cc.three();
		cc.two();
		cc.one();
		System.out.println("---------------------");
		
	} // main() end
} // class end

출력 결과

 

저작자표시 비영리 동일조건 (새창열림)

'⁂ Java > : 기본 익히기' 카테고리의 다른 글

[JAVA] #7-3 Object와 toString()  (0) 2022.09.14
[JAVA] #7-2 Override  (0) 2022.09.14
[JAVA] #6-5 자바의 날짜 관련 함수(GregorianCalendar, Calendar, Date)  (0) 2022.09.14
[JAVA] #6-4 Wrapper Class  (0) 2022.09.14
[JAVA] #6-3 Getter와 Setter 함수  (0) 2022.09.13
    '⁂ Java/: 기본 익히기' 카테고리의 다른 글
    • [JAVA] #7-3 Object와 toString()
    • [JAVA] #7-2 Override
    • [JAVA] #6-5 자바의 날짜 관련 함수(GregorianCalendar, Calendar, Date)
    • [JAVA] #6-4 Wrapper Class
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바