기간
2023/2/28 ~ 2023/3/02
수업
실시간 ZOOM 수업
static
컴파일 시에 정적으로 메모리 생성
heap
인스턴스의 멤버변수(static이 아닌 것) 및 메소드 저장
stack
메소드 실행되면 쌓임 FILO
→ 메소드의 지역변수, 매개변수도 stack에 저장됨
상속
재사용하기 위해 쓰는 게 아님. 재사용은 부가적인 것
is a가 아니면 상속관계 X
추상화하기 위해 쓴다.
Car car = new Car(new Engine());
DI 주입
→ 컴포짓 패턴
아시아인 n1 = new 한국인(); //한국인-(아시아인)-지구인
n1.name //아시아인
지구인 n2 = new 한국인(); //한국인-아시아인-(지구인)
n2.name //지구인
구체적 행위가 다르다.
메소드에 파라미터로 주입돼도 의존성 주입
부모의 메서드가 오버라이드됨
→ 오버라이드: 무효화시킴
자식이 부모의 메서드를 오버라이딩(x) 재정의(0)
어노테이션은 JVM의 주석이다.
@Override를 달면 JVM이 해당 클래스를 조회할 때 해당 어노테이션으로 바로 감
싱글톤패턴 설계
class Doorman{
//불변: setter가 없기 때문에
private static instance = new Doorman();
public static Doorman getInstance(){
return instance;
}
private Doorman(){}
}
public main(String[] args){
Doorman d = Doorman.getInsatance();
//Doorman.getInstance = null; 할 수 없음
}
인터프리터 언어
타입 안 적는 이유: 런타임에 메모리 결정
null 대신 undefined
class User{
private int id;
private String username;
private String password;
//getter, setter, constructor
}
let user = {
id: 1,
username: "test",
password: "1234"
}
console.log("id". user.id)
serializable 직렬화 및 역직렬화를 통해 통신 → json으로
json: javascript object notation
heap에 저장됨
원할 때 new 해서 띄우는 자바와는 다르게 자바스크립트는 다 뜸
그리고 자바스크립트는 타입을 보지 않기 때문에 배열에 여러 타입이 들어갈 수 있어서 느리다.
파이썬은 인터페이스 언어
→ 내부적으로 C언어로 실행됨
자바스크립트는 자바(객체 지향: 클래스를 1급 객체)와 다르게 모든 것을(메소드도) 1급 객체로 생각
→ 1급 객체: 최상단에 위치할 수 있는 코드
⇒ 1급 객체는 변수에 담을 수 있다.
자바에서는 클래스 안에 구현해야 쓸 수 있음
하지만 자바스크립트는 바로 호출 가능
class A{ //VO
int num = 10;
}
호이스팅
→ 코드가 실행하기 전 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상을 말한다.