셀프 레퍼런스 : 모든객체. 프로그램에서 가지고 있는 형태를 설명
클래스 accessed 프로그램이 동작하는 동안에 처음으로 접근하면 호출되는 함수 .
인스턴스 컨스트럭트는 내가 객체를 만드는 것
create object => 객체가 없어도 동작해야 함 static 과 같은 의미를 가지고 있음.
객체가 없으면 파라미터를 가지고 있지 않음
construct가 객체를 만들 때 필요로 하다고 했는데 static structor가 왜 필요 하냐 ..->
static constructor 은 객체가 없이 생성
바로 그 때 객체가 없이 생성이 될 때 스태틱 컨스트럭트가 동작
그렇다고 객체를 만들어주지는 않음
사용
1. 스태틱한 목적이 호출 되면
2. 상속이 이뤄지면 보통 수퍼클래스와 서브클래스가 존재하는데
대부분 수퍼클래스를 호출하지 않고 서브클래스를 호출하게 되면 부모가 없는 자식은 쓸 수 없음. subclass가 인스턴스를 트리거 시키면 superclass가 스태틱 컨스트럭트에서 호출됨.
사용되는 목적
1. 어트리뷰트, 메서드가 호출되면 객체가 내부적으로 필요
2. 서브클래스에 명시적으로 호출될때 부모클래스를 명시적으로 호출
그래서 임포트 파라미터가 필요 없음
객체지향은 me라는 키워드가 존재하는데 그것은 자기 자신을 가리킬 때 쓰는 말.
일반화 구체화. 특성화
위로 올라갈수록 general , 아래로 내려갈 수록 special
generalization 과 spcialization구분을 알아둘 것
상속을 했을 때 public, protected, private의 구분
상속을 했을 때static에 어떻게 접근하는가
upcasting 과 down casting 을 정확하게 이해하면 interface는 쉬울 수 있음.
super class를 고민할 때 abstract를 통해 가장 공통적인것들이 되는 것을 super class로 해서 상속받아 쓸 수 있게하는것이 객체지향의 특징
is a realtionship 이 subclass와 superclass의 관계를 표현하는 말
노랑색은 부모로부터 가진 형질
컨스트럭트가 두개가 있다면 우선순위는 항상 static이 먼저고 그 다음이 instance
static 은 객체가 없어도 동작을 해줘야하기 때문에 객체를 내부적으로 만들어줘야하고 메모리에 move시켜줘야 함 .
그런데 객체가 만들어지지는 않음. 메모리 상에 로드가 될 뿐임
create object가 뜨고 step을 디버깅 하면 static한 성분에 접근했기 때문.
clss data를 만들었기때문에 ... 접근하려고 해서 객체가 없이 먼저 실행.
static 이 instance 에 먼저 동작하는지 안하는지 어떤 영향을 끼치는지 알아야 함 .super class
만드는건 1,2,3 호출은 3,2,1
public 은 모두 private은 클래스 안에서만
protected는 모든 서버 안에서, 외부에서는 불가능
public은 밖에서도 접근이 가능
private는 나만 접근이 가능 상속됐든 안됐든 불가능
protected는 inside와 나의 subclass까지 가능
왼쪽이 서브 오른쪽이 수퍼
수퍼가 서브로 내려오는 것
visibility option이 부모님게 보임.
super에서 만들면 up-cast했기때문에 뭐 만들었는지 다 보임
subclass는 모두 부모의 성질을 가지고 있다.
super class 가 up-cast 했다.
lo_vehicle 이 로컬에 선언 lcl_vehicle이 수퍼클래스
down-cast는 up-cast가 된 상태에서 가능.
만약 그게 아니라면 에러가 발생.
인터페이스 -> 같이 묶고 싶지만 공통된 개념이 없을 때 발생
형식, 껍데기. 객체를 못만들기 때문에 implementation part도 없는 것
public component만 가진다.
인터페이스를 정의하고 구현할 method이름만 적고 끝.
implementation이 따로 없음. 기능만 정의 .
인터페이스 정의 aliases ( inner join에서 나왔던 개념 )
인터페이스가 수퍼클래스처럼 보이지만 수퍼클래스보다 상위개념에 있다고 볼 수 있다.
클래스 안에 클래스는 들어갈 수 없지만 인터페이스는 여러개를 가질 수 있으며 nested가 가능. (인터페이스 안에 인터페이스가 들어갈 수 있다)