JAVA Study
3. package와 import
- 패키지란 클래스의 묶음이다
: 클래스 또는 인터페이스를 포함시킬 수 있음
: 서로 관련된 클래스들끼리 그룹 단위로 묶어놓음으로써 클래스를 효율적으로 관리할 수 있음
: 패키지는 물리적으로 하나의 디렉토리
: 하나의 소스파일에 첫 번째 문장으로 단 한 번의 패키지 선언을 허용
: 모든 클래스는 반드시 하나의 패키지에 속함
: 패키지는 점(.)을 구분자로하여 계층구조로 구성가능
: 클래스 파일(.class)을 포함하는 하나의 디렉토리
- 패키지 선언
package 패키지명;
: 패키지명은 대소문자를 모두 허용하지만 클래스명과 구분하기 위해 소문자를 사용
: 모든 클래스는 반드시 하나의 패키지에 포함되어야 함, 패키지를 선언하지 않을 경우 기본으로 제공되는 'unnamed package'에 속함
- import 문
: 사용하고자 하는 클래스의 패키지를 미리 명시해줌
: 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공
- import문 선언
:한 소스파일에 여러 번 선언 가능
import 패키지명.클래스명;
import 패키지명.*; // '*'은 패키지에 속하는 모든 클래스를 의미함
- static import문
: static 멤버를 호출할 때 클래스 이름을 생략할 수 있음
: 특정 클래스의 static멤버를 자주 사용할 때 편리
import static java.lang.Integer.*; // Integer 클래스의 모든 static메서드
4. 제어자 (modifier)
- 제어자는 클래스, 변수, 메서드 선언부에 함께 사용되어 부가적 의미를 부여
- 접근 제어자와 그 외의 제어자로 구분
: 접근 제어자 - public / protected / default / private
: 그 외 제어자 - static / final / abstract / native / transient / synchronized / volatile / strictfp
- 하나의 대상에 대해 여러 제어자를 조합하여 사용 가능
- 접근 제어자는 한 번에 하나만 선택해서 사용가능
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 | public class Time { private int hour; // 접근 제어자를 private으로 하여 외부에서 직접 접근 불가 private int minute; private int second; public int getHour() { return hour; } public void setHour (int Hour) { if (Hour <0 || Hour > 23) return; this.hour = hour; } public int getMinute() { return Minute; } public void setMinute (int minute) { if (minute<0 || minute> 23) return; this.minute= minute; } public int getSecond() { return second; } public void setHour (int second) { if (second<0 || second> 23) return; this.second= second; } } | cs |
5. 다형성 (polymorphism)
- 상속과 깊은 관계가 있음
- 여러가지 형태를 가질 수 있는 능력을 의미
- 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 구현
: 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하는 것
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 | class Car{ String color; int door; void drive() { // 운전하는 기능 System.out.println("drive, Brrr"); } void stop() { // 멈추는 기능 System.out.println("stop!!"); } } class FireEngine extends Car{ //소방차 void drive() { // 소방차운전 System.out.println("drive,fire!!"); } } class Ambulance extends Car{ void siren() { // 사이렌 울리는 기능 System.out.println("siren!!"); } } | cs |
: 인스턴스 타입과 참조변수 타입이 일치하는 것이 보통이지만 클래스가 서로 상속관계에 있을 경우 조상클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조하도록 하는 것도 가능하다
FireEngine e = new FireEngine();
car c = new FireEngine(); // 조상 타입의 참조변수로 자손 인스턴스를 참조
=> 자손의 인스턴스를 참조하므로 c.drive()의 결과는 drive, fire이 된다.
=> 둘 다 같은 타입의 인스턴스지만 참조변수의 타입에 따라 사용할 수 있는 멤버의 개수가 달라짐
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] 7 객체지향 프로그래밍 2-3 (0) | 2017.07.22 |
---|---|
[JAVA] 7 객체지향 프로그래밍 2-1 (0) | 2017.07.11 |
[JAVA] 6 객체지향 프로그래밍1 (0) | 2017.07.05 |
[JAVA] 배열 예제 (0) | 2017.07.04 |
[JAVA] 5 배열 (Array) (0) | 2017.07.03 |