1. 추상클래스
추상메소드
- 메소드의 선언부만 있는 메소드(구현이 되어 있지 않는 메소드, 즉 몸체가 없는 메소드)
추상클래스
- 추상 메소드를 가지고 있는 클래스(추상 메소드를 하나라도 가지면 추상클래스임)
- 메소드가 미완성 되어 있으므로 추상 클래스로는 객체를 생성할 수 없다
- 추상 클래스는 주로 상속 계층에서 추상적인 개념을 나타내기 위한 용도로 사용
- 추상 클래스를 만들기 위해서는 클랫 선언 시에 앞에 abstract 를 붙인다
public abstract class Animal{
public abstract void move(); //추상 메소드 ;으로 종료됨 유의!!
}
public class Lion extends Animal{
public void move(){
System.out.println("사자의 move() 메소드입니다.");
}
};
- 자식 클래스가 책임지고 추상메소드의 바디를 만들어줘야함
2. 인터페이스
인터페이스
📍상속관계가 아닌 클래스 간의 유사성을 인코딩하는 데 사용
- 인터페이스는 추상 메소드들과 디폴트 메소들로 이루어져 있다.
- 인터페이스 안에서 필드(변수)는 선언 할 수 없으며 "상수"만 정의 할 수 있다.
Implement(구현)
📍인터페이스는 다른 클래스에 의하여 구현(implement) 될 수 있다.
- 즉 인터페이스에 정의된 추상 메소드의 몸체를 정의한다는 것이다.
interface RemoteControl{
//추상 메소드 정의
public void turnOn();
public void turnOff();
}
class Television implements RemoteControl{ //여기 있는 모든 추상메소드의 바디를 만들어 주겠다는 뜻
boolean on;
public void turnOn() {
on = true;
System.out.println("turn on");
}
public void turnOff() {
on = false;
System.out.println("turn off");
}
}
- Televison클래스의 객체를 생성 후 인터페이스에 정의된 메소드를 호출 할 수 있다.
잠깐 중간 점검,,, 인터페이스 vs 추상클래스
☑️ 추상 클래스
- 관련된 클래스들 사이에서 공유하고 싶은 코드가 있을 때 사용
- 공통적인 필드나 메소드의 수가 많은 경우 또는 public이외의 접근 지정자를 사용해야하는 경우에 추상클래스를 사용한다.
-일반 멤버 필드를 선언하기를 원할 때 사용한다.
☑️인터페이스
- 관련이 "없는" 클래스들이 동일한 동작을 구현하기를 원할 때 사용
- 특정한 자료형의 동작을 지정하고 싶지만 누가 구현하든지 신경 쓸 필요가 없을 때 사용한다.
- 다중 상속이 필요할 때 (클래스간의 다중상속은 안되지만 인터페이스에서는 다중 상속 가능)
인터페이스 타입
📍인터페이스를 정의 하는 것은 새로우누 자료형을 정의 하는 것과 같다.
즉, 인터페이스 이름을 자료형처럼 사용할 수 있다.
인터페이스도 상속할 수 있다
📍인터페이스도 다른 인터페이스를 상속 할 수 있다
인터페이스를 이용한 다중상속
📍다중상속: 하나의 클래스가 여러개의 부모클래스를 가지고 있는 것
📍동시에 여러 개의 인터페이스를 구현하면 다중 상속의 "효과"를 낼 수 있다
방법1) 하나의 클래스가 두가지 이상을 구현(implement)할 수 있다.
방법2) 하나의 클래스를 상속받고 또 하나의 인터페이스를 구현한다(extends, implents)
인터페이스 상수 정리
- 인터페이스 안에서 정의된 변수는 자동적으로 public static final이 되어 상수가 됨
- 상수 이니까 무조건 정해줘야함!! 변수 아님
Default 메소드
📍인터페이스 개발자가 메소드의 디폴트 구현을 제공 할 수 있는 기능
- 이미 만들어 놓은 인터페이스에 어떤 추상메소드를 추가하고 싶다고 하자. 기존의 코드는 동작하지 않는다. 그래서 추가하려는 추상메소드를 디폴트 메소드를 정의하여 기본적인 코드르 붙여준다면 기존의 코드도 변겨없이 동작이 가능하다
정적 메소드
인터페이스 안에 정적메소드가 들어가서 쓰일 수 있음
3. 중첩 클래스
중첩클래스의 분류
1. 내부 클래스: 클래스의 멤버처럼 선언되는 중첩 클래스 (클래스 안에 클래스)
2. 지역 클래스: 메소드의 몸체 안에서 선언되는 중첩 클래스 ( 메소드 안에 클래스)
3. 익명 클래스: 수식의 중간에서 선언 되고 바로 객체화 되는 클래스 (클래스 몸체는 정의 되지만 이름이 없는 클래스)
'STUDIES > JAVA' 카테고리의 다른 글
Java - 9. 자바 GUI (0) | 2022.11.01 |
---|---|
Java - 8. 자바 API패키지 (0) | 2022.10.25 |
Java - 클래스와 객체 (0) | 2022.10.24 |
Java - 6. 상속 (0) | 2022.10.22 |