오버로딩과 오버라이딩의 차이
- 오버로딩은 새로운 메소드를 정의하는 것
- 오버라이딩은 상속받은 기존의 메소드를 재정의 하는 것
추상 메소드
- 추상 메소드란 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미합니다.
- 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함입니다.
인터페이스
- 인터페이스란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다.
- 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있습니다.
- 인터페이스는 오로지 추상 메소드와 상수만을 포함할 수 있습니다.
인터페이스의 장점
- 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능합니다.
- 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축할 수 있습니다.
- 클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍이 가능합니다.
object클래스의 clone() 메소드
- 해당 인스턴스를 복제하여, 새로운 인스턴스를 생성해 반환
- 필드의 값만을 복사하므로, 필드의 값이 배열이나 인스턴스면 제대로 복제할 수 없습니다.
- 이러한 경우에는 해당 클래스에서 clone() 메소드를 오버라이딩하여, 복제가 제대로 이루어지도록 재정의해야 합니다.
- 이러한 이유로 clone() 메소드는 데이터의 보호를 위해 Cloneable 인터페이스를 구현한 클래스의 인스턴스만이 사용할 수 있습니다.
제네릭
- 자바에서 제네릭이란 데이터의 타입을 일반화한다는 것을 의미합니다.
- 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법입니다.
- 장점
- 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있습니다.
- 반환 값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있습니다.