728x90
반응형
추상클래스와 인터페이스를 먼저 정리하자.
1. 추상클래스 Absract Class
- 추상메소드를 한개 이상 가지고 있고, abstract로 선언
- 추상메소드를 가지지 않지만, abstract로 선언
// 추상메소드를 가진 추상클래스
abstract class Shape{
Shape(){...}
abstract public void edit(){...}
// void edit(){...} // abstract public 생략가능
}
// 추상메소드를 가지지않은 추상클래스
abstract class Volume{
String name;
void load(String name){
this.naem = name;
}
}
- 추상메소드를 가지면 반드시 추상클래스로 선언되어야 한다.
- 추상클래스를 상속받은 추상클래스는 부모의 추상메소드를 구현하지 않고, 새로운 메소드를 정의할 수 있다.
연습문제
public abstract class Calculator {
// 이를 구현하여 동작하는 코드 작성
public abstract int add(int a, int b);
public abstract int subtract(int a, int b);
public abstract double average(int[] a);
}
public class CalMachine extends Calculator{
@Override
public int add(int a, int b) {
return a + b;
}
@Override
public int subtract(int a, int b) {
return a - b;
}
@Override
public double average(int[] a) {
double sum = 0;
for(int i =0; i<a.length; i++){
sum+=a[i];
}
return sum/a.length;
}
public static void main(String[] args) {
CalMachine calMachine = new CalMachine();
System.out.println(calMachine.add(1,2));
System.out.println(calMachine.subtract(3,5));
System.out.println(calMachine.average(new int[]{1,2,3,4}));
}
}
2. 인터페이스
규격화된 모듈로 만들어 인터페이스가 맞는 모듈을 조립하듯 응용프로그램을 작성한다.
- 상수 필드(public final static 생략가능)과 추상메소드(abstract public 생략가능)만으로 구성
- 인터페이스를 상속받아 새로운 인터페이스를 만들 수 있다.
interface Phone{
int BUTTONS = 20;
void sectCall();
void receiveCall();
}
interface MobilePhone extends Phone{
void sendSMS();
void receiveSMS();
}
interface MusicPhone extends Phone{
void playMusic();
...
}
// 구현
class SmartPhon implements MobilePhone{
// 상속받은 모든 메소드 구현
public void sendCall(){...}
public void receiveCall(){...}
...
public void receiveSMS(){...}
// 다른 메소드도 구현 가능
public int getButtons(){...}
}
728x90
반응형
'Design Patterns > 생성(Creational)' 카테고리의 다른 글
[FactoryMethod]장점과 단점 (0) | 2022.05.20 |
---|---|
[Singleton]4. 자바와 스프링에서 찾아보는 패턴 (0) | 2022.04.08 |
[Singleton]3. 안전하고 단순하게 구현하는 방법 (0) | 2022.04.07 |
[Singleton]2. 패턴 구현 깨트리는 방법 (0) | 2022.04.05 |
[Singleton] 1. 개념 및 구현 방법 (0) | 2022.04.04 |