6월 5일 복습하기
1.jdk1.8부터 디폴드메서드와 static메서드 추가가능
2.인터페이스에는 새로운 메서드(추상메서드)를 추가하기 어려움
왜? 인터페이스에 추가시 상속받았던 구현 클래스에도 메서드를 추가해 줘야하기 때문에 인터페이스가 널리 쓰이고 있을시 파장이 큼
그래서 디폴드 메서드가 나옴
3.디폴드 메서드는 인스턴스메서드로 구현부가 존재함
이때 디폴드메서드라는 표시로 default를 꼭 붙여 줘야함.
default void newMethod(){}
4.내부클래스
내부클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다.
A클래스에서 B클래스의 멤버를 쓸려면 객체를 생성해야하는데,
내부클래스는 객체 생성 없이 접근 가능
코드의 복잡성을 줄일수 있다.(캡슐화)
B클래스가 A클래스에서만 쓰일경우 B클래스를 내부클래스로 사용하여
캡슐화 한다.
5.내부클래스의 특징
(1)내부클래스에는 접근제어자는 4가지 모두 사용가능하다.
(2)static클래스만이 static멤버를 정의 할수 있다.
(3)내부클래스에서 외부클래스의 private멤버 접근이 가능하다.
(4)지역 내부 클래스를 감싸고 있는 메서드의 상수만 사용가능
왜? 상수는 따로 다른 메모리에서 관리하고있기 때문에
지역변수가 생명주기가 짧아 사라져도 상수는 남아있음.
(5)외부클래스의 인스턴스를 먼저 생성해 줘야
내부클래스의 인스턴스를 생성가능하다.
(6)static내부클래스는 외부클래스의 인스턴스 생성안해도 사용 가능하다.
6.익명클래스
이름이 없는 일회용 클래스, 정의와 생성을 동시에 함.
자기이름이 없기 때문에 부모클래스의 이름을 쓰던가 구현인터페이스 이름을 쓴다.
new 부모클래스이름 or 구현인터페이스이름(){...}