데이터와 데이터를 다루는 메서드를 하나로 묶고 외부에서는 허락한 방법으로만 접근할 수 있게 만드는 것

health를 private으로 선언해서 클래스 내에서만 수정할 수 있게 만들고 다른 public 메서드를 통해서만 바꿀 수 있게 만듦 <= 외부에서 접근 불가


저기 health인 척 뻔뻔하게 앉아있는 애들은 암시적 매개 변수 value다.
setter에 고정으로 사용되며 프로퍼티 변수 값을 알아서 가져간다.
이럴 땐 기가 막히게 똑부러진데 자료형 안붙였다고 징징대는 거 보고 있으면 복장이 터진다.
상속받은 부모 클래스의 멤버(필드, 메서드, 프로퍼티)에 접근 가능
계층 상속을 통해 구조를 형성할 수 있음
sealed 키워드 클래스는 다른 클래스에 상속 불가
private 멤버는 상속 불가능
protected 멤버는 외부에서 접근 불가능 & 상속 가능
부모 -> 자식 순으로 호출 / 자식 -> 부모 순으로 소멸

자식 클래스에서 필요에 따라 재정의할 수 있게 만드는 메서드
부모 클래스의 메서드를 변경하거나 확장할 수 있음
상속할 메서드에서 virtual, 상속받는 메서드에서 override

동명의 메서드로 부모 클래스 멤버를 가리더라도 부모 클래스를 참조하는 함수는 부모 클래스를 기준으로 호출한다.
부모 클래스의 멤버를 virtual(가상)으로 만들고 자식 클래스의 멤버를 override(덮어쓰기)해서
함수가 부모 클래스 멤버에 덮어씌운 자식 클래스 멤버를 참조할 수 있게 한다.
인스턴스를 생성할 수 없는 클래스
주로 상속을 위한 베이스 클래스로 사용
메서드를 선택적으로 구현할 수 있음
구현부가 없는 추상 메서드는 자식 클래스에서 구현해야 함
