회고록 블로그
[자료구조] 네이버 부스트코스 '자바로 구현하고 배우는 자료구조' 공부 필기 (3) 본문
매일 강의를 듣지는 못했지만 아직 자료구조 공부를 포기하지는 않았다..ㅠ
출처 강의 : '자바로 구현하고 배우는 자료구조', Rob Edwards, https://www.boostcourse.org/cs204/joinLectures/145114
※ 강의 들으며, 개인적으로 필요한 내용만 필기함
1. 객체지향 프로그래밍
[개요]
- 자료구조 본격 공부하기 전, 객체지향 프로그래밍 복습
- 상속과 클래스 복습
[내용]
- Object Oriented Programming 복습
- int는 4byte, short는 2byte, long은 8byte의 공간을 메모리에 할당함
- 여기 Student라는 객체가 생성되었음
// Person 클래스
class Person {...}
// Student 클래스
class Student extends Person {...}
// 메인메소드
Student s = new Student();
- 이때, s는 얼마의 메모리를 사용할까
→ 객체 종류에 따라 다르지만, 여기에서는 JVM이 4byte의 블록을 가지고 참조변수 s의 공간을 만듦
- 그리고 이 4byte는 힙에 있는 공간을 가리키게 됨(= 참조)
- 이 힙 공간에는 Student와 관련된 정보들이 저장됨
→ (상속 객체가 무엇이 있고 얼마의 크기가 필요한지 등) Student 객체를 만드는데 메모리가 얼마나 필요한지 계산한 후에 힙에 공간이 만들어짐
- Inheritence & Classes 복습
// Person 클래스
class Person {...}
// Student 클래스
class Student extends Person {...}
// 메인메소드
Student s = new Student();
- JVM은 자식 클래스 Student가 부모 클래스 Person을 상속한다는 것을 알아채고
부모 클래스 Person의 변수와 메소드를 모두 가져와 Student 클래스의 정보와 함께 힙에 저장해둠
- 어떤 프로그래밍 언어는 다중 상속을 허용하지만, 자바는 다중 상속을 허용하지 않기 때문에 부모 클래스는 하나밖에 존재하지 않음
- 상속 관계는 트리 형태로 아래와 같이 표현할 수 있음
→ Elementary는 School의 정보를 갖고 있고 School은 Organization의 정보를 갖고 있음
즉, Elementary는 자기자신(Elementary)과 School, Organization의 정보를 모두 갖고 있음
→ Elementary는 (Company의 자식 클래스인) IT의 정보를 가질 수 없음
- 즉, 위의 트리는 올라가는 것만 할 수 있음 (= 상속받는 클래스 정보만 갖고 있을 수 있음)
- 상속 관계와 변수의 형변환
- 아래 코드는 컴파일 되지 않는 코드
Elementary e = new School(); // 불가능
→ School과 Organization의 정보 크기를 계산한 후 힙 영역에 저장함
→ 이때 Elementary 클래스의 정보는 포함되지 않음
→ 그러다보니 School과 Organization 정보에만 접근할 수 있고 Elementary 클래스의 내용에는 접근할 수 없음
→ 결과적으로 컴파일이 되지 않음
- 이 객체에 대해서 힙에 충분한 공간이 할당되지 않기 때문
'3. Computer Science 공부 > 자료구조' 카테고리의 다른 글
[자료구조] 네이버 부스트코스 '자바로 구현하고 배우는 자료구조' 공부 필기 (6) (0) | 2021.12.01 |
---|---|
[자료구조] 네이버 부스트코스 '자바로 구현하고 배우는 자료구조' 공부 필기 (5) (0) | 2021.11.30 |
[자료구조] 네이버 부스트코스 '자바로 구현하고 배우는 자료구조' 공부 필기 (4) (0) | 2021.11.23 |
[자료구조] 네이버 부스트코스 '자바로 구현하고 배우는 자료구조' 공부 필기 (2) (0) | 2021.11.11 |
[자료구조] 네이버 부스트코스 '자바로 구현하고 배우는 자료구조' 공부 필기 (1) (0) | 2021.11.05 |