클래스 필드 (static 필드)
클래스 메소드에서 인스턴스 필드를 사용하지 못하는 이유를 알아보자.
static block 사용방법을 알아보자
main 메소드 보다 먼저 실행되는 static 블록
자바의 메모리 영역에 대한 가벼운 설명 & 인스턴스 생성
new 연산자를 사용할 때마다 메모리에 인스턴스가 생성된다.
인스턴스는 더 이상 참조되는 것이 없을 때, 나중에 (언제가 될지 모른다. 보통 메모리가 부족할 때) 가비지 컬렉션 (Garbage Collection)된다.
-static한 필드는 클래스가 로딩될 때 딱 한번 메모리에 올라가고 초기화 된다.
인스턴스 메소드(static이 안 붙은 메소드)는 인스턴스를 생성하고 나서 레퍼런스 변수를 이용해 사용할 수 있다.
클래스 메소드는 클래스명.메소드명()으로 사용가능하다.
메소드 안에서 선언된 변수들은 메소드가 실행될 때 메모리에 생성되었다가, 메소드가 종료될 때 사라진다.
추상화란?
캡슐화란?
좋은 객체란?
다형성 (Polymorphim)
메소드 오버로딩
메소드 오버라이딩
over + ride = 올라 타다
상위 클래스의 메서드를 하위 클래스가 재정의하는 것이다.
메서드 이름, 타입, 변수 개수 동일해야한다.
주로 상위 클래스의 동작을 상속 받은 하위 클래스에서 변경하기 위해 사용된다.
📕 메소드가 오버라이딩 되면 무조건 자식의 메소드가 실행된다.
오버라이딩을 필드와 메소드 다 했다면, 필드는 Type을 따라가고, 메소드는 오버라이딩된 자식의 메소드가 실행된다. 즉, 메소드 오버라이딩만 기억하자

패키지
상속
상속은 굉장히 강한 결합이다. 반드시 써야 할 때만 쓰고 되도록 사용 안 하는 것이 좋다. 결합도는 낮추고, 응집도는 높이는 것이 좋기 때문이다.
부모 타입으로 자식 타입을 참조할 수 있다. (업캐스팅)
EX.
Car car = new Bus();
: 내가 운전하는 것은 버스인데 자동차의 기능만 사용할거야
Setter과 Getter
Object의 오버라이딩 하라고 제공하는 toString(), equals(), hashCode() 메소드
Object의 특성
객체를 문자열로 변환하는 메소드 toString()
to String() 특성
: '객체+문자열'연산 or 객체 출력하는 경우, Object의 toString()자동으로 출력된다.
EX.
Car c1 = new Car();
System.out,println(c1); // Object의 toString() 출력
🚩 즉 개발자는 클래스를 작성할 때, Object의 toString()을 오버라이딩하여 자신만의 문자열을 리턴할 수 있다.
두 객체의 내용이 같은지 비교하는 메소드 equals()
== 연산자와 equals() 의 차이
-> ==은 두 레퍼런스가 동일한 객체를 가리키는지 비교, equals()는 두 객체의 내용물이 같은지 비교
🚩 사실, 내용 동일의 기준은 작성자마다 다르기에 작성자가 equals() 메소드를 오버라이딩 하는 것이 원칙이다.