728x90
추상 클래스란
📌 클래스가 설계도라면 추상 클래스는 미완성된 설계도입니다.
- abstract 키워드를 사용하여 추상 클래스를 선언할 수 있습니다.
- public abstract class 추상클래스명 { }
- 추상 클래스는 추상 메서드를 포함할 수 있습니다.
- 추상 메서드가 없어도 추상 클래스로 선언할 수 있습니다.
- 추상 클래스는 자식 클래스에 상속되어 자식 클래스에 의해서만 완성될 수 있습니다.
- 추상 클래스는 여러개의 자식 클래스들에서 공통적인 필드나 메서드를 추출해서 만들 수 있습니다.
※ 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우 사용한다.
추상 메서드
📌 추상 메서드는 아직 구현되지 않은 미완성된 메서드입니다.
- abstract 키워드를 사용하여 추상 메서드를 선언할 수 있습니다.
public abstract class 추상클래스명 {
abstract 리턴타입 메서드이름(매개변수, ...);
}
- 추상 메서드는 일반적인 메서드와는 다르게 블록{ }이 없습니다.
- 즉, 정의만 할 뿐, 실행 내용은 가지고 있지 않습니다.
추상 클래스 상속
📌 추상 메서드는 extends 키워드를 사용하여 클래스에서 상속됩니다.
public class 클래스명 extends 추상클래스명 {
@Override
public 리턴타입 메서드이름(매개변수, ...) {
// 실행문
}
}
- 상속받은 클래스에서 추상 클래스의 추상 메서드는 반드시 오버라이딩 되어야 합니다.
예제 코드
Main 클래스
public class Main {
public static void main(String[] args) {
Car car1 = new BenzCar();
car1.horn();
System.out.println();
Car car2 = new AudiCar();
car2.horn();
System.out.println();
Car car3 = new ZenesisCar();
car3.horn();
}
}
Car 추상 클래스
public abstract class Car {
String company; // 자동차 회사
String color; // 자동차 색상
double speed; // 자동차 속도 , km/h
public double gasPedal(double kmh) {
speed = kmh;
return speed;
}
public double brakePedal() {
speed = 0;
return speed;
}
public abstract void horn();
}
BenzCar, AudiCar, ZenesisCar 클래스
public class BenzCar extends Car {
@Override
public void horn() {
System.out.println("Benz 빵빵");
}
}
public class AudiCar extends Car {
@Override
public void horn() {
System.out.println("Audi 빵빵");
}
}
public class ZenesisCar extends Car {
@Override
public void horn() {
System.out.println("Zenesis 빵빵");
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 디폴트 메서드와 static 메서드 (0) | 2023.06.01 |
---|---|
[JAVA] 인터페이스 (0) | 2023.06.01 |
[JAVA] instanceof (0) | 2023.06.01 |
[JAVA] 다형성 (polymorphism) (0) | 2023.06.01 |
[JAVA] 참조변수의 타입변환 (0) | 2023.06.01 |