가상 메서드 virtual 이란 자식클래스에 있는 정보를 부모클래스로 관리를 할때,
해당하는 동작을 실행 시키기 위해 부모클래스에 있는 메서드에 접근을 했더니 virtual 이면 자식클래스에서 재정의를 했을수도 있으니 먼저 확인후 사용하고 없으면 부모클래스에 있는 메서드를 써라 라고 이해하고 있다.
Stack<T>: 제너릭 클래스 (T 타입을 받아 다양한 자료형 사용 가능)
Push(T item): 값을 스택에 추가 / Pop(): 스택의 마지막 값 반환 후 제거 // 선입 후출
static 메서드는 static 끼리만 사용가능
상속을 다중상속으로 사용하지 않는 이유는 설계의 복잡성이 증가하며 이름충돌 등등 충돌현상 해결이 어려워짐.
그리고 다중 상속을 허용하면 한 클래스가 두 개 이상의 부모 클래스로부터 동일한 멤버를 상속받을 수 있습니다. 이 경우, 같은 이름의 멤버를 가지고 있을 때 어떤 부모 클래스의 멤버를 사용해 야 하는지 모호해집니다.
A>B>D , A>C>D 로 예를들면 A 가 부모 클래스이며 B와 C에게 상속을 해주고 D 가 다시 상속을 받을때,
각각의 A 에서 B,C 를거치고 D에 왔을때 A라는 부모 클래스가 2개가 되어버려 오류가 발생한다.
Interface 인터페이스 는 클래스가 아니다 . 코드의 재사용성과 유연한 설계에 장점이 있다. 아이템을 사용할때 여러 아이템이 있지만 특정 아이템의 효과만 가져오고 싶을경우 그 아이템만 상속받아 사용가능하다. 추상적인 동작만 정의.
코드중 중복코드를 작성할때 인터페이스로 묶어서 따로 빼내어 관리해보자 라는 생각으로 학습 추천
enum 은 열거형, 기본값은 int 형이며 0부터 자동으로 증가한다 , 원하는값으로 지정도 가능하다.