동적 바인딩 : 실행할 당시의 객체 타입 기준으로 바인딩 되는 것Super obj = new Sub() 일 경우 - 부모 생성자 → 자식 생성자 순으로 호출 - 부모와 자식 클래스에서 각각 public int num 멤버를 선언했다면 자식 클래스 내부에서 obj.num 출력하면 부모 것 출력 (Sub로 캐스팅해야 Sub의 num이 출력됨) public int num을 상속 받은 경우에만 자식 것을 출력(overriding처럼) - Sub에만 있는 method 호출 시 : 컴파일 에러 (캐스팅 필요)instaceof 키워드 if (e instance of Person) { ... } 연속해서 사용할 경우 Sub class부터 instanceof 해야함인터페이스 - 모든 메소드는 public abstract..
JAVA
finally - try 또는 catch 블럭에서 return을 만나도 finally 블럭은 수행된다. - System.exit()을 만나면 무조건 프로그램 종료 - 주로 리소스 관리 고려하는 코드예외처리 방법 1. caller에게 처리 위임 - 메소드 선언 시 throws exception_name - 계속 위임하면 main까지 가고 main 마저 try-catch가 없으면 비정상 종료 2. Exception e = new Exception("에러") 객체 생성 후 throw e; // throw new Exception("에러"); 3. catch 절에서 exception을 그대로 던지거나 catch 블록 내에서 새로운 exception을 throw new Exception("새로운 예외") 하기도 ..
논리적으로 한 곳에서만 사용되는 클래스들을 grouping코드 가독성 및 유지보수성 증가Static Nested (4 종류 중 이것만static) - outer 클래스의 맴버변수 선언위치에 선언 - static member변수나 static method처럼 . 찍고 사용 - 메모리 구조 : outer 클래스와 독립적으로 존재 (코드 상으로는 outer 내부에 작성) - Outer(Line), Nested(static Point) 일 때 Line.Point point = new Line.Point(10, 20); // Outer class의 객체만 생성하면 Nested 객체는 생성 없이 바로 사용 가능Instance Inner - outer 클래스의 필드, 메소드와 같은 수준 - 메모리 구조 : outer..
class나 interface 내부에 선언해야함enum Colors { RED, YELLOW, BLACK }; // 0, 1, 2 자동 할당. Colors라는 객체 참조 없이도 RED 단독으로 쓸 수는 없다. 단 switch-case문은 예외.사용 : Color c = Colors.RED; // 0 할당
CollectionList : 중복 허용, 추가 순서 유지리스트 내 중복 item 제거하기List items = new ArrayList(); items.add(1); items.add(2); items.add(1); items.add(2); items.add(3); items.add(3); System.out.println(items); // [1, 2, 1, 2, 3, 3] List uniqueItems = new ArrayList(new HashSet(items)); System.out.println(uniqueItems); // [1, 2, 3] 중복되는 요소들을 가질 리스트를 HashSet으로만든뒤에 다시 List로 변환을 하면 중복요소가 사라진 유일한 요소들만 가진 리스트를 만들 수 있다.Ma..