💡서로 관련 있는 클래스 또는 인터페이스 등을 모아 하나의 묶음(그룹)으로 단위를 구성하는 것
같은 패키지 내에서는 동일한 이름의 클래스를 만들 수 없지만, 패키지가 다르면 동일한 이름을 가진 클래스를 만들 수도 있다.
클래스명은 원래 패키지명을 포함하고 있다. 예) kr.ac.samhyook.method.Calculator (이게 클래스명)
지금까지 클래스 명에 패키지 명을 함께 사용하지 않은 이유는 동일한 패키지 내에서 사용했기 때문이다. 그렇기 때문에 서로 다른 패키지에 존재하는 클래스를 사용하는 경우에는 클래스명 앞에 패키지명을 명시해서 풀 클래스 이름으로 사용해야 한다.
1-1-2. 패키지의 선언
package 패키지명;
클래스나 인터페이스의 소스파일(.java)의 최상단에 선언되어야 한다.
클래스 명명규칙과 다르게 소문자로만 작성하는 것을 원칙으로 한다.
패키지 명을 지정하지 않으면 자동적으로 이름 없는 패키지에 속하게 된다.
1-2. 패키지 확인
package com.ohgiraffers.section01.method;
public class Calculator {
// 모듈화(modulation) : 관련있는 것끼리 뭉쳐놓는다.
public int plusTwoNumbers(int first, int second) {
return first + second;
}
public int subTwoNumbers(int first, int second) {
return first - second;
}
public int multiTwoNumbers(int first, int second) {
return first * second;
}
public int divideTwoNumbers(int first, int second) {
return first / second;
}
public int minNumbersOf(int first, int second) {
return (first > second) ? second : first;
}
public static int maxNumbersOf(int first, int second) {
return (first > second) ? first : second;
}
}
package com.ohgiraffers.section02.package_and_import;
public class Application1 {
public static void main(String[] args) {
/* 수업목표. 패키지에 대해 이해할 수 있다. */
/* 설명.
* 패키지의 의미
* 1. 클래스의 소속이 다르다.(다른 소속에선 같은 클래스명을 쓸 수 있다.)(feat.Data 자료형)
* 2. 원래 클래스명의 일부분이다.
* 3. 경우에 따라 생략이 가능하다.(하지만 자동으로 작성되는 내용이다.)(같은 패키지일 때는 생략가능)
* */
/* 설명. non-static 메소드 호출해 보기(feat. 다른 패키지에 있는) */
com.ohgiraffers.section01.method.Calculator cal
= new com.ohgiraffers.section01.method.Calculator();
int plusResult = cal.plusTwoNumbers(100, 20);
System.out.println("100과 20의 합 = " + plusResult);
/* 설명. static 메소드 호출해 보기(feat.다른 패키지에 있는) */
int maxResult =
com.ohgiraffers.section01.method.Calculator.maxNumbersOf(100, 20);
System.out.println("두 수 중에 큰 수는 " + maxResult);
}
}
// 실행 결과
100과 20의 합 = 120
두 수 중에 큰 수는 100
2. 임포트(import)
2-1. 임포트 개요
2-1-1. 임포트란?
💡서로 다른 패키지에 존재하는 클래스를 사용하는 경우 패키지명을 포함한 풀 클래스 이름을 사용해야 한다. but 매번 다른 클래스의 패키지명까지 기술하기에는 번거롭다 그래서 패키지명을 생략하고 사용할 수 있도록 한 구문이 import 구문!!
import 는 package 선언문과 class 선언문 사이에 작성하며 어떠한 패키지 내에 있는 클래스를 사용할 것인지에 대해 미리 선언하는 효과를 가진다.
import 문은 소스파일(.java) 에서 package 문과 클래스 선언문 사이에 명시한다.
static import 문은 static 메소드를 호출할 때 사용한다.
2-2. 임포트 확인
package com.ohgiraffers.section01.method;
public class Calculator {
// 모듈화(modulation) : 관련있는 것끼리 뭉쳐놓는다.
public int plusTwoNumbers(int first, int second) {
return first + second;
}
public int subTwoNumbers(int first, int second) {
return first - second;
}
public int multiTwoNumbers(int first, int second) {
return first * second;
}
public int divideTwoNumbers(int first, int second) {
return first / second;
}
public int minNumbersOf(int first, int second) {
return (first > second) ? second : first;
}
public static int maxNumbersOf(int first, int second) {
return (first > second) ? first : second;
}
}
package com.ohgiraffers.section02.package_and_import;
import com.ohgiraffers.section01.method.Calculator;
public class Application2 {
public static void main(String[] args) {
/* 수업목표. import에 대해 이해할 수 있다. */
/* 설명. 다른 패키지의 클래스명(full 클래스명)을 줄여쓰고자 할 때 쓸 수 있다. */
/* 설명. non-static 메소드의 경우 */
Calculator calculator = new Calculator();
int result = calculator.plusTwoNumbers(80, 22);
System.out.println("result = " + result);
int result2 = Calculator.maxNumbersOf(40, 90);
System.out.println("result2 = " + result2);
}
}