인터페이스의 여러가지
추상메서드
- 모든 선언된 메서드는 추상 메서드 public abstract




static 메서드이기떄문에 인터페이스 이름으로 호출도 가능하다.
여러 인터페이스 구현
- 자바의 인터페이스는 구현코드가 없으므로 하나의 클래스가 여러 인터페이스는 구현 할 수 있음.
- 디폴트 메서드가 중복되는 경우는 구현하는 클래스에서 재정의 하여야 함.
인터페이스의 상속
- 인터페이스 사이에도 상속을 사용할 수 있음
- extends 키워드를 사용
- 인터페이스는 다중 상속이 가능.
클래스 상속과 인터페이스 구현 함께 쓰기
-
실무에서 프레임워크나 오픈소스와 함꼐 연동되는 구현을 하게되면 클래스 상속과 인터페이스의 구현을 같이 사용하는 경우가 많음.
-
책이 순서대로 대여가되는 도서관 구현
-
책을 보관하는 자료 구조가 Shelf에 구현됨
-
Queue 인터페이스를 구현함
-
SehIf클래스를 상속받고 Queue를 구현한다.
Object클래스- 모든 클래스의 최상위 클래스
- import하지않아도 자동으로 import됨
- import.java.lang.*
- 많이 사용하는 기본 클래스들이 속한 패키지
모든 클래스는 Object클래스를 상속 받는다.
- java.lang.object 클래스
- 모든 클래스의 최상위 클래스는
- 모든 클래스는 Object에서 상속받고, Objecf의 클래스의 메서드중 일부는 재정의해서 사용할 수 있음.
toString()메서드
equals() 메서드
- 두 인스턴스의 주소 값을 비교하여 true/false를 반환
- 재정의하여 두 인스턴스가 논리적으로 동일함의 여부를 구현함
- 인스턴스가 다르더라도 논리적으로 동일한경우 ture를 반환할수있도록 재정의 할 수 있음.
HashCode() 메서드
- HashCode()는 인스턴스의 저장 주소를 반환함
- 힙메모리에 인스턴스가 저장되는 방식이 hash방식
- Hash:정보를 저장,검색하는 자료구조
- 자료의 특정 값(키 값)에대한 저장위치를 반환해주는 해시 함수를 이용.


두개는 다른객체이기 떄문에 false를 반환한다.

equals는 주소를같냐 고 물어보는거기꺠문에
false를 반환

주소값이 같냐고 물어봤기떄문에 true를 반환한다.

다운캐스팅


주소는다르지만 논리적으로같냐고 물어봤기떄문에
true를 반환한다.

str1=str2 는 메모리값을 주는것이아닌 같을때
같은 해시코드가 반환되면 된다.

학번이 반환되게 하면된다.
clone메서드
- 객체의 원본을 복제하는데 사용하는 메서드
- 생성과정의 복잡한 과정을 반복하지않고 복제할수 있음
- Clone()메서드를 사용하면 객체의 정보(멤버 변수값등 ...)가 동일한 또 다른 인스턴스가 생성 되는 것이므로, 객체지향 프로그램에서의 정보은닉, 객체 보호의 관점에서 위배될 수 있음
- 해당 클래스의 clone()메서드의 사용을 허용한다는 의미로 cloneeable 인터페이스를 명시
String 클래스
- String 선언하기
- String str1=new String("abc");
- String str="abc";

연결-새로운 문자를 연결하기떄문에 메모리낭비가 초래됨.
StringBUilder,StringBuffer 활용하기
- 내부적으로 가변적인 char[]를 멤버 변수로 가짐
- 문자열을 여러번 연결하거나 변경할 때 사용하면 유용함
- 새로운 인스턴스를 생성하지 않고 char[]를 변경함
- StringBuffer
Class 클래스
- 자바의 모든 클래스와 인터페이스는 컴파일 후
class파일이 생성됨
- Class클래스는 컴파일된 class파일을 로드하여
객체의 동적 로드하고, 정보를 가져오는 메서드가 제공됨