2010. 12. 11. 23:28
인터페이스 Study/Java2010. 12. 11. 23:28
인터페이스란?
구현 된 것은 아무것도 없는 밑바탕만 있는 "기본 설계도" 라고 생각하면 된다.
인터페이스 작성방법
ex)
interface 인터페이스 이름{
내가 기존에 알고 있던 인터페이스는 C++ 에는 있지만 자바에는 없는 다중 상속을 사용할 때ex)
interface 인터페이스 이름{
//모든 멤버변수는 public static final 이어야 하고
//모든 메서드는 public abstract 이어야한다.
//모든 메서드는 public abstract 이어야한다.
}
기존의 다중상속의 장점만을 취해서 하는 것이라고 생각했다.
(※자바의 정석 298page 에 보면 인터페이스가 단순히 다중 상속을 위한 것으로 오해를 사고는 하는데 공부를 하다보면 참된 의미를 알 것이라고 하였다.)
ex)
interface A{
..생략..
}
interface B{
..생략..
}
interface C extends A,B{
..생략..
}
interface A{
..생략..
}
interface B{
..생략..
}
interface C extends A,B{
..생략..
}
인터페이스의 장점만을 적어보자면 (자바의 정석 page 303)
1. 개발 시간을 단축 : 메서드를 호출 하는 쪽에서는 메서드의 내용에 관계없이 선언부만 알면됨!
2. 표준화가 가능 : 기본틀을 인터페이스로 작성하여 일관화되고 정형화된 개발이 가능
3. 서로 관계없는 클래스들끼리 관계를 맺어 줌 : 하나의 인터페이스를 공통적으로 구현하도록 관계를 맺어줌.
4. 독립적인 프로그래밍 가능 : 선언과 구현을 분리시킬 수 있다.
문제 : (interface를 사용할것!)
온풍기 냉풍기 가 가능한 에어콘이 있다.
on 이라는 명령을 내리고 설정온도를 입력하면 25도 초과일때 Hot mode
25도 미만일때 Cold mode
25도 일때 Air Care mode
로 출력하게 하며
off 일때는 종료가 엉뚱한 명령어가 입력되거나 최대값 30도, 최저값 18도 범위 밖일 경우도 종료시켜라.
음. 내가 만든 문제는 아니고 어디선가 봤던 문제인듯.
(정답을 몰라서 일단 내 코딩을 등록해두고 과감히 평가받기)
import javax.swing.JOptionPane;
interface Airconable{
class Aircon{
class SelectMode extends Aircon implements Airconable{
abstract void mode(int temp);
}
class Aircon{
private int max_temp = 30;
private int min_temp = 18;
void operate(String operate, int temp){
if(operate.equals("on")){
if(control(temp)){
System.out.println("작동중");
}
else{
else{
System.exit(0);
}
}
else if(operate.equals("off")){
System.out.println("정지");
System.exit(0);
}
else{
System.out.println("잘못입력했습니다");
System.exit(0);
}
}
boolean control(int temp){
System.out.println(temp+"도로 설정되었습니다.");
if(temp > max_temp){
System.out.println("온도가 너무 높게 설정되었습니다."+"종료합니다.");
return false;
}
else if(temp<min_temp){
System.out.println("온도가 너무 낮게 설정되었습니다."+"종료합니다.");
return false;
}
else{
return true;
}
}
}
class SelectMode extends Aircon implements Airconable{
SelectMode(String operate, int temp){
super.operate(operate,temp);
mode(temp);
}
@Override
public void mode(int temp) {
if(temp>25){
System.out.println("HOT MODE");
}
else if(temp<25){
System.out.println("COLD MODE");
}
else{
System.out.println("AIR CORE MODE");
}
}
}
public class aircon2 {
public static void main(String args[]){
String oper = "";
String question = "";
int temp = 25;
oper = JOptionPane.showInputDialog("시작:on , 종료:off.");
if(oper.equals("on")){
question = JOptionPane.showInputDialog("온도를 입력하세요.");
temp = Integer.parseInt(question);
}
SelectMode sm = new SelectMode(oper, temp);
}
}
'Study > Java' 카테고리의 다른 글
[면접정리]객체지향에 대해서 설명 (0) | 2011.01.25 |
---|---|
제네릭스 (Generics) <발행 No. 공개 No.> (0) | 2010.12.13 |
static 멤버 클래스를 많이 사용하자 (0) | 2010.12.12 |
태그 클래스보다는 클래스 계층을 사용하자 (0) | 2010.12.12 |
타입을 정의할 때만 인터페이스를 사용 (0) | 2010.12.12 |
추상 클래스보다는 인터페이스를 사용하자 (0) | 2010.12.09 |
추상 클래스 (0) | 2010.12.09 |
가급적 상속보다는 컴포지션을 사용하자. (0) | 2010.12.09 |
상속 (0) | 2010.12.08 |
이해안가던 자바퍼즐러6 Multicast (0) | 2010.12.08 |