1)패키지(package)란?
관련된 클래스 및 인터페이스 등을 모아 놓은 폴더
2)모듈(module)이란?
관련 패키지들을 모아 놓은 것
프로그램 실행 시 필요한 모듈만 사용하여 메모리에 효율적으로 사용
3)import 문
패키지에 있는 클래스들을 참조하기 위해 사용
4)package 문
프로그래머가 작성한 프로그램의 패키지를 지정
5)상속(inheritance)
기존 클래스의 멤버 변수와 멤버 메소드를 모두 가짐
추가적인 멤버 변수와 멤버 메소드를 정의
기존의 멤버 변수와 멤버 메소드를 재정의
상속해 주는 클래스:부모 클래스, 슈퍼(super)클래스,상위클래스
상속받는 클래스:자식 클래스, 서브(sub)클래스,하위클래스
단일 상속: 부모 클래스는 반드시 하나이고, 자식 클래스는 여러 개일 수 있음
상속을 정의하는 법: extends 키워드를 사용
6)접근 제한자(access modifier)
클래스 또는 클래스의 멤버에 대한 접근을 제한하는 키워드
클래스, 멤버 변수(필드), 멤버 메소드(메소드), 생성자 메소드에 사용
1) 객체 형변환
업 캐스팅(up casting): 상위 클래스의 참조 변수가 하위 클래스의 객체를 참조하는 것
다운 캐스팅(down casting): 하위 클래스의 참조 변수가 상위 클래스의 객체를 참조하는 것
2) 추상 클래스(abstract class)
추상 메소드를 가지는 클래스
abstract 키워드를 지정하여 클래스와 메소드를 정의
추상 클래스를 상속 받은 하위 클래스들은 반드시 추상 메소드를 오버라이딩 해야 함
추상 클래스를 상속하여 또 다른 추상 클래스를 만들 수 있음
추상 클래스의 참조 변수는 하위 클래스의 객체를 참조할 수 있음(객체 형변환 가능)
3) 인터페이스(interface)
자바는 단일 상속만 허용, 다중 상속의 대안으로 사용
인터페이스 정의: interface 키워드를 사용
인터페이스 구현: implements 키워드를 사용
4) 내부 클래스(inner class)
클래스 내부에 또다시 선언된 클래스
종류: 내부 클래스, 메소드 안에 선언된 내부 클래스, 내부 무명(익명) 클래스
5) final
클래스 선언 시 지정
메소드 선언 시 지정
변수 선언 시 지정
1)Hardware 추상 클래스 정의
2)Switch 인터페이스 정의
3)Hardware를 상속하고, Switch를 구현한 Robot클래스 구현
4)필요에 따라 특성 및 기능을 추가하시오
package exim;
public class Robot extends Hardware implements Switch {
public void powerOn() { // Hardware 추상 클래스로 부터 정의(필수)
if(power == false) {
power = true;
System.out.println("[Power ON]");
} else {
System.out.println("Already Power ON!!");
}
}
public void powerOff() { // Hardware 추상 클새스로 부터 오버라이딩
if(power == true) {
power = false;
System.out.println("[Power OFF]");
} else {
System.out.println("Already Power OFF!!");
}
}
public void switchOn() { // Switch 인터페이스로 부터 정의(필수)
System.out.println(Switch.NAME+" Trying.. Power ON!!");
powerOn();
}
public void switchOff() { // Switch 인터페이스로 부터 정의(필수)
System.out.println(Switch.NAME+" Trying.. Power OFF!!");
powerOff();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Robot r = new Robot();
r.switchOn();
r.switchOn();
r.switchOff();
r.switchOff();
r.switchOn();
}
}
------------------------------------------------------
package exim;
public abstract class Hardware {
public boolean power = false;
abstract public void powerOn(); // 추상 메소드
public void powerOff() {
power = false;
}
}
------------------------------------------------------
package exim;
public interface Switch {
public static final String NAME = "[SWITCH]";
public void switchOn();
public void switchOff();
}
<Result>
[SWITCH] Trying.. Power ON!!
[Power ON]
[SWITCH] Trying.. Power ON!!
Already Power ON!!
[SWITCH] Trying.. Power OFF!!
[Power OFF]
[SWITCH] Trying.. Power OFF!!
Already Power OFF!!
[SWITCH] Trying.. Power ON!!
[Power ON]