일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 맛집
- laravel
- Web Server
- Oracle
- elasticsearch
- javascript
- Design Patterns
- java
- 요리
- php
- MySQL
- redis
- linux
- devops
- Gradle
- Spring
- Spring Boot
- ReactJS
- JVM
- jenkins
- it
- Git
- IntelliJ
- ubuntu
- AWS
- jsp
- Spring Batch
- db
- springboot
- tool
Archives
- Today
- Total
아무거나
추상클래스(abstract) 본문
반응형
[추상클래스]
강제로 부모클래스에서 자식클래스에게 메소드를 강제로 재정의(override)하게 할 수 있다. 그리고 이러한 방법으로 만들어진
클래스를 추상클래스라고 한다.
ex)
[부모]
// 추상클래스는 반드시 추상메소드 하나이상이 포함되어 있다.
public abstract class HeadQuarterStore {
public HeadQuarterStore() {}
public abstract void orderKimChijjige();
public abstract void orderBuDaejjige();
}
[자식]
public class StoreNum1 extends HeadQuarterStore {
public StoreNum1() {}
@Override
public void orderKimChijjige() {}
@Override
public void orderBuDaejjige() {}
}
* 부모 클래스의 메소드를 자식 클래스에서 변경할 일이 없다면, 일반 클래스를 이용한 상속이 좋습니다. 하지만 자식클래스에서
꼭 재정의 해야 하는 부분이 있다면, 추상클래스를 이용하여 강제로 재정의 하게 해야 합니다.
ex2)
패키지는 package com.javalec.makecarex; 로 공통
public class MainClass {
public static void main(String[] args) {
StarCar starCarLowGrade = new StarCarLowGrade(CarSpecs.COLOR_RED, CarSpecs.TIRE_NORMAL, CarSpecs.DISPLACEMENT_2000, CarSpecs.HANDLE_NORMAL);
starCarLowGrade.getSpec();
}
}
public class CarSpecs {
public static final String COLOR_RED = "레드";
public static final String TIRE_NORMAL = "일반타이어";
public static final int DISPLACEMENT_2000 = 2000;
public static final String HANDLE_NORMAL = "일반핸들";
}
public class StarCarLowGrade extends StarCar {
private int tax = 1000;
public StarCarLowGrade(String color, String tire, int displacement, String handle) {
super(color, tire, displacement, handle);
}
@Override
public void getSpec() {
System.out.println("***********************");
System.out.println("색상 : "+color);
System.out.println("타이어 : "+tire);
System.out.println("배기량 : "+displacement);
System.out.println("핸들 : "+handle);
if(displacement > 2000) tax = 1500;
System.out.println("세금 : "+tax);
}
}
public abstract class StarCar {
public String color;
public String tire;
public int displacement;
public String handle;
public StarCar(String color, String tire, int displacement, String handle) {
this.color = color;
this.tire = tire;
this.displacement = displacement;
this.handle = handle;
}
public abstract void getSpec();
}
[결과값]
***********************
색상 : 레드
타이어 : 일반타이어
배기량 : 2000
핸들 : 일반핸들
세금 : 1000
반응형
'Java & Kotlin > Java' 카테고리의 다른 글
싱글턴 패턴(Singleton Pattern) (0) | 2019.08.09 |
---|---|
인터페이스 (0) | 2019.08.08 |
super 키워드 (0) | 2019.07.04 |
오버라이드 (0) | 2019.07.04 |
static (0) | 2019.07.04 |
Comments