백엔드/JAVA_이론공부

JAVA_캡슐화, 패키지, import

반 불혹 2022. 9. 18. 21:01

캡슐화

캡슐화란 특정 객체 안에 관련된 속성, 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는것을 말한다.

캡슐화의 목적은 데이터 보호, 네부적으로 사용되는 데이터에 대한 불필요한 외부 노출 방지이다. 

캡슐화된 객체는 정보 은닉의 장점이 있다. 

 

캡슐화의 예시, 변수와 메서드가 클래스 안에서 일부분 가려져 있다. (출처 : 코드스테이츠)

 

앞서 "불필요한 외부 노출 방지"라는 표현을 썻는데, 캡슐화된 객체를 사용 할 때, 접근제어자(Access Modifier)와 getter와 setter 메서드가 필요한 특징이 있다.

 

패키지

패키지는 특정한 목적을 공유하는 클래스와 인터페이스의 묶음이다. 

클래스가 속성, 기능을 묶어 데이터를 관리한다면, 패키지는 클래스들을 묶어 관리하는 것이다.

쉽게 말해서 우리가 폴더에 파일을 넣어 보관하는것 처럼 패키지는 클래스, 인터페이스를 담는다. 
-> 폴더 = 패키지 / 파일 = 클래스, 인터페이스

그리고 패키지에는 계층구조를 가지고 있는데 CLI명령어에서 폴더 순서 찾는거마냥 점(.)으로 표현된다.

작성예시

// 패키지를 생성했을 때
package 패키지명.다음계층; // 패키지 구문 포함. 패키지가 없다면 구문 필요없음
                           // 다음 계층은 패키지 안의 클래스 등이 해당됨

public class (패키지 안에 넣을 클래스) {

}

패키지의 장점은 클래스를 묶어서 간단하게만드는 것 뿐 아니라, 클래스의 중돌을 방지해 준다. 

예를들어 같은 이름의 클래스가 있더라도 서로 다른 패키지에 있으면 충돌이 나지 않는다. 

이러한 특성으로 큰 규모의 협업에서 패키지를 사용하면 충돌을 줄일 수 있다.

 

import문

import문은 다른 패키지 내의 클래스를 사용하기 위해 사용된다.

작성예시

import 패키지명.클래스명; 또는 import 패키지명.*;

만약 import문을 사용하지 않고, 다른 패키지의 클래스를 사용 하려면, 

package practicepack.test;

public class ExampleImport {
		public int a = 10;
		public void print() {
			System.out.println("Import문 테스트")
}
package practicepack.test2; // import문을 사용하지 않는 경우, 다른 패키지 클래스 사용방법

public class PackageImp {
		public static void main(String[] args) {
			practicepack.test.ExampleImport example = new practicepack.test.ExampleImport();
		}
}

위의 코드처럼 가져오고자 하는 패키지명을 모두 포함시켜서 (practicepack.test.ExampleImport) 클래스의 패키지에 대한 정보를 제공해야 한다.

하지만 import문을 사용한다면 

package practicepack.test;

public class ExampleImp {
		public int a = 10;
		public void print() {
			System.out.println("Import문 테스트")
}
package practicepack.test2; // import문을 사용하는 경우

import practicepack.test.ExampleImp // import문 작성

public class PackageImp {
		public static void main(String[] args) {
			ExampleImp x = new ExampleImp(); // 이제 패키지명을 생략 가능
		}
}

가져오고자 하는 패키지명을 모두 포함시키지 않고도  (practicepack.test.ExampleImport 를 작성 안해도 됨) import practicepack.test.ExampleImp 만 써 주면 패키지 명을 생략하고 사용 가능하다.

import해서 패키지를 불러오든, 패키지명을 다 서서 불러오든, 프로그램의 성능에 영향은 없다고 한다.

 

'백엔드 > JAVA_이론공부' 카테고리의 다른 글

JAVA_다형성, instanceof 연산자  (1) 2022.09.22
JAVA_접근제어자 , getter, setter  (0) 2022.09.18
JAVA_super, super()  (0) 2022.09.18
JAVA_메서드 오버라이딩  (0) 2022.09.18
JAVA_상속  (0) 2022.09.18