** 중요 **
1. 상속은 포함관계와 전혀 연관이 없다 헷갈리면 안된다. 상속은 is a 관계 설정이다 라는 말을 주로 한다.
즉 상속을 하기 위해선 is a 관계가 반드시 설정이 되어야 한다. is a는 논리적인 관계인것이다. 물리적일 수 없다.
예를 들어 명제라는게 있다. 수학 시간 우리는 명제라는것을 배웠었다.
p는 q 이다. (참), q는 p 이다. (참 또는 거짓 일 수도 있다. 이런건 보통 거짓이다.)
즉 is a관계 설정은 위에 명제를 예를들어 말한것 처럼 관계 설정이 논리적으로 작용 한다는 것이다.
class Manager extends Employee{
팀장=p 직원=q
}
일때 팀장은 그 회사의 직원이다. (참)
직원은 그 회사의 팀장이다. (항상 팀장은 아니다. / 거짓 )
class A extends B{
}
2. 포함 관계 => 두 클래스 사이를 연결시키는 방법 (=> 멤버변수를 선언=>연결)
** 중요 **
그 다음으로
InheriTest.java 해당 클래스를 생성하여 상속과 생성자와의 관계를 고찰해보자.
1.자바에서 클래스를 작성 => java.lang.Object => 조상
===== 상속을 받아서 작성
2. 상속관계에서 자식 클래스의 객체를 생성 해보자.
======
부모클래스의 생성자를 먼저 호출하고 나서 자식클래스의 생성자를 호출한다.
이러한것을 생성자 호출 메카니즘이라 불린다.
그리고 가장 기본적인 패키지의 클래스는 자동인식을 한다. 하지만 그 외에 패키지는 무조건 import를 사용하여야한다.
java.lang외의 다른 패키지의 클래스는 반드시 import를 사용해서 불러온다 는것을 반드시 기억해야한다.
this 는 자식클래스의 객체를 가리키는 예약어
super 는 부모 클래스의 객체를 가리키는 예약어
super() 는 부모클래스의 생성자를 호출하라는 문장이고
super(1) 은 부모클래스의 인수 1개짜리 생성자를 호출하라 라는 의미이고
super (1, "홍길동") 은 부모 클래스의 인수 2개짜리 생성자를 호출 하라는 문장이다.
즉 상속의 원리는 아래와 같다.
객체.toString() =>부모의 toString()호출
메모리의 주소값
getClass().getName() + '@' + Integer.toHexString(hashCode())
============== 16진수를 16진수문자형태로 변환
객체와 연관이 있는 클래스명@ 16진수문자열
==>주소값을 알려주는 기능
c=>j0719.Child@6d06d69c
c.toString()=>j0719.Child@6d06d69c
-------------------------->j0719패키지에 있는 Child클래스를
만들어진 객체면서 주소값 6d06d69c에 만들어짐을 알려준다.
추가 꿀팁으로는 extends 안에서 커서를 놓고 ctrl + space 를 누르면 자동으로 오버라이딩 할수있는 내용이 목록으로 호출이 된다.
그리고 부모의 메소드의 내용을 오버라이딩을 하게되면 => 자식도 변경된 내용을 상속 받기 때문에 변경이 된다.
'JAVA-Spring > 상속성' 카테고리의 다른 글
JAVA 자바 [ 객체 지향 프로그래밍 ] 생성자, Super (0) | 2019.07.22 |
---|---|
JAVA 자바 [ 객체 지향 프로그래밍 ] 상속 개요 및 활용 (0) | 2019.07.19 |
댓글