object/ clone
1)clone 복제복제
1. 클래스가 Cloneable 인터페이스를 구현해야 한다
- >Cloneable인터페이스 구현체가 아니라면 호출 시 CloneableCloneNotSupportedException 예외가 던져진다
2. clone메소드를 오버라이드 한다
->이 때 오버라이드 메소드 접근제한자를 public으로 지정
3. clone 메소드를 오버라이드 하는 경우 super.clone()을 사용한 상위 클래스의 clone메소드의 호출을 해야한다.
(why? clone은 생성자가 아니라 자동으로 호출되지 않음 (수동으로)
super.clone()을 호출해서 재귀적으로 부모 클래스의 clone 메소드를 호출하는 방식이다)

s1.clone(); 오류가 뜨는데 student가 복제가능하다는것을 알려줘야한다
---->cloneable이라는 인터페이스를 구현하면 된다

엥? cloneable 인터페이스를 보니깐 빈 공간인데?..

복제가능한 class라는걸 버추얼머신에게 알려주기 위한 구분자 역할.. 즉 약속이라고 보면 됨
근데 그래도 오류가 사라지지 않는다 why?
object클래스의 clone이라는 메소드의 특징때문에 그렇대

protected : 다른 패키지라 메소드 호출은 안되지만 상속은 가능하다
clone메소드를 오버라이딩(재정의)해서 public 으로 접근제어자를 바꿔줘도 된다 일단 오버라이딩하자!!

근데 계속 오류가 뜬다 why? ↓↓↓↓↓↓↓↓↓↓

명시되어 있다는 것은 런타임 exception이 아니다 => exception처리해야한다 1. try 2. throws

(student)s1.clone() ; -> object라 형변환