일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Java
- php
- 플러터 개발환경 설정
- C
- php 프로그래밍
- php 프로그래밍 입문 문제풀이
- 자바
- 자바 스프링
- SWEA
- 페이코 추천인코드
- Flutter
- 페이코 친구코드
- 페이코 추천인
- php 프로그래밍 입문 솔루션
- programmers
- spring
- C언어
- 배열
- JAVA SPRING
- 파이썬
- 페이코 초대코드
- 한정 분기
- php 프로그래밍 입문 3판
- php 프로그래밍 입문
- 최단 경로
- 스프링
- 플러터
- php 프로그래밍 입문 연습문제
- 백준
- php 프로그래밍 입문 예제
- Today
- Total
ImJay
[자바] Is A 상속 본문
Has A 상속과 비교했을 때 Is A 상속은 부모가 자식이 요구하는 것을 완벽하게 갖고 있진 않다는 것이다.
Is A 상속은 한 캡슐이 내가 만들고자 하는 캡슐에서 필요한 부분들이 상당 부분 있을 때, 그 캡슐을 상속하여 필요한 부분들을 가져다 쓴다는 개념으로 이해하면 쉽다.
대표적인 Is A 상속에는 프레임워크가 있다.
프레임워크를 통해 Is A 상속을 하여 내가 원하는 부분을 상속함으로써 작업 속도를 향상하고, 작업량을 줄일 수 있다.
장점은 생산성이 좋다는 것이지만, 단점으로는 기성품으로 생각될 수 있다는 점이다.
거의 모든 부분을 가져다 쓰기 때문이다.
그러나 현재 IT는 굉장히 빠른 속도로 성장하고 있기 때문에 대다수 현업자들이 프레임워크를 선호하고, 일부분을 나의 아이디어로 차별화시키는 전략을 사용한다.
public class Program {
public static void main(String[] args) {
Child A = new Child();
System.out.println(A.print());
}
}
import Parent;
public class Child extends Parent {
}
자바에서 상속을 이용할 때는 extends 를 사용한다.
위 코드에서 Parent 가 내가 작성하고 싶은 기능들이 작성되어 있는 객체라고 가정하면,
Child는 extends 만을 사용하여 Parent 의 모든 기능을 사용할 수 있는 새로운 객체가 생성된 것이다.
복사했다는 것과 비슷하게 보면 될 것 같다.
여기서 새로운 기능들을 추가하여 내가 원하는 새로운 프로그램을 탄생시킬 수 있다.
import Parent;
public class Child extends Parent {
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
Parent 를 Is A 상속하는 Child 객체에 내가 새롭게 추가하고 싶은 변수 x 를 추가하였다.
public class Program {
public static void main(String[] args) {
Child A = new Child();
A.setX(10);
System.out.println(A.print());
}
}
그 다음, Program 을 통해 x 에 값 10을 전달하고 상속 받은 print 메소드를 통해 x 를 출력해보려고 한다.
그렇다면, 이 Program 은 정상적으로 작동할까?
Parent의 Is A 상속을 받은 Child 의 print 메소드는 Parent 의 print 메소드를 기준으로 만들었기 때문에,
우리가 새롭게 Child 에서 추가한 변수 x 에 대한 print 메소드는 정상적으로 작동하지 않을 것이다.
그렇다면 어떻게 이걸 해결할 수 있을까?
다음 글을 통해 알아보자.
'자바 > 기본 개념' 카테고리의 다른 글
[자바] 자식 클래스 객체 초기화 (0) | 2022.07.04 |
---|---|
[자바] 오버라이드 메소드 ( Override Method ) (0) | 2022.06.30 |
[자바] Has A 상속 (0) | 2022.06.30 |
[자바] 프로그램 설계 시 기본적으로 고려해야되는 것 (0) | 2022.06.30 |
[자바] Getters 와 Setters 를 사용하는 이유 (0) | 2022.06.29 |