package chap_08.camera;
public abstract class Camera {
public void takePicture() {
System.out.println("사진을 촬영합니다.");
}
public void recordVideo() {
System.out.println("동영상을 녹화합니다.");
}
public abstract void showMainFeature(); // 구현해야 하는 메소드
// 이런 식으로 그냥 메인 카메라에서 설계도를 잡아주는 느낌이네 기본 기능 얹어주고
}
package chap_08.camera;
public class FactoryCam extends Camera{
@Override
public void showMainFeature() {
System.out.println("화재 감지");
}
}
package chap_08.camera;
public class speedCam extends Camera{
@Override
public void showMainFeature() {
System.out.println("속도 측정, 번호 인식");
}
}
package chap_08;
import chap_07.camera.SpeedCam;
import chap_08.camera.Camera;
import chap_08.camera.FactoryCam;
public class _01_AbstractClass {
public static void main(String[] args) {
// 데이터 추상화(Data Abstraction)
//디테일한 부분은 숨기고 꼭 필요한 정보만 공개하는 과정
// abstract
// 추상 클래스 (아직 완성되지 않은 클래스)
// 추상 메소드 (추상 클래스 내부에서만 사용 가능한, 껍데기만 있는 메소드)
// 추상 클래스라 객체 생성 불가능 오 그냥 객체 생성 안 되게 하는 거임 ㅇㅇ
// Camera camera = new Camera();
FactoryCam factoryCam = new FactoryCam();
factoryCam.showMainFeature();
SpeedCam speedCam = new SpeedCam();
speedCam.showMainFeature();
speedCam.recordVideo();
}
}
인터페이스
여러가지 클래스를 상속하고 싶을 수도 있잖음?
그러면 선언만 먼저 때려두고 상속 받아서 하는거임ㅇㅇ
인터페이스 생성
package chap_08.reporter;
public interface Reportable {
void report(); // 신고
}
package chap_08.reporter;
public class NormalReporter implements Reportable {
@Override
public void report() {
System.out.println("일반 화재 신고를 진행합니다.");
}
}
package chap_08.reporter;
public class VideoReporter implements Reportable{
@Override
public void report() {
System.out.println("직전 30초 영상과 함께 신고를 진행합니다.");
}
}