1. 클래스 이해하기
1) 클래스의 위치를 파악해보자
클래스를 이해하기 전 우선 먼저 클래스가 존재하는 패키지(Package)에 대해 이야기해보려한다.
Test01_class 라는 클래스를 만들었다.
이 클래스는 oop0908이라는 패키지에 위치해있다.
맨 위의 코드로 선언되어있는 것을 확인할 수 있을 것이다.
이처럼 클래스는 어느 저장 위치를 갖고 있다.
(물론 패키지 안에 저장하지 않을 수도 있다. 이 경우에 자바는 dafault package에 클래스를 저장한다)
클래스는 같은 이름을 갖고 있지만 다른 기능을 가진 클래스가 존재할 수 있다.
그렇기에 클래스가 위치한 패키지를 정확하게 지정해야한다.
2) Import
그렇다면 다른 패키지에 있는 클래스를 불러올 수도 있을까?
당연히 가능하다.
그 때 사용하는 명령어가 바로 import이다.
자바는 다양한 클래스를 제공하고 있다.
아래의 사이트들을 살펴보면 수많은 클래스들을 확인할 수 있다.
https://docs.oracle.com/javase/8/docs/api/index.html
https://docs.oracle.com/javaee/7/api/
그런 클래스들을 각각 활용하기 위해선 잘 불러와야한다.
불러오는 형식은 아래와 같다.
import java.io.*; // java의 io 안에 있는 모든 요소를 선언
import java.sql.*;
import java.util.Arrays; // 해당 클래스를 직접 선언
import java.awt.*; // GUI 관련 클래스(그래픽 관련)
import javax.swing.*; // GUI 관련 클래스
import oop0907.*; // 내가 만든 패키지 선언하기
이처럼 *을 사용하여 패키지의 전체 요소를 지정해줄 수도 있고, 클래스 하나를 직접 선언할 수도 있다.
그래픽 관련한 문법도 있고, 내가 만든 패키지를 가져올 수도 있다.
2. 접근 제어자 Access Modifier(접근 제어, 접근 수정)
private | 비공개. 클래스 내부에서만 접근 가능하다. 은닉할 수 있다. |
package | 생략한다. 현재 package(oop0908)내에서만 접근 가능하다. |
protected | 상속관계에 있는 클래스가 다른 패키지에 있는 경우에만 접근 가능하다. |
public | 공개. basic01_java 프로젝트 내에서 모두 접근 가능하다. |
private < package < protected < public 순으로 영역이 크다.
3. 클래스의 성질
1) 기본 접근 제어자 inner class로 확인하기
위와 같이 우리가 기본적으로 생성했던 Test01_class 위에 Sungjuk 이라는 클래스를 새로 만들어보았다.
사실 이 방법을 추천하진 않는다. 이런 방식으로 클래스를 생성하면 탐색기에 잡히지 않기 때문이다.
그래서 클래스를 하나씩 생성하는 것을 추천한다.
이렇게 만들어진 클래스에는 기본적으로 package 라는 접근 제어자가 달려있음을 확인할 수 있다.
2) 클래스의 구성요소
클래스를 구성하는 요소는 두 가지가 있다.
- 멤버변수 field
- 멤버함수 method
System.out.println(Math.PI); // 멤버변수
System.out.println(Math.abs(-3)); // 멤버 함수
그리고 이 구성요소들에도 접근 제어자를 달아서 사용 권한을 지정할 수도 있다.
Sungjuk 클래스에 멤버 변수와 멤버 함수를 만들면서 접근 제어자를 함꼐 사용해보자.
class Sungjuk { // package 생략되어 있음 : package class Sungjuk
// 클래스명의 첫 글자는 대문자로 한다.
// 멤버 변수 field
public String name; // 클래스 외부에서 접근 가능하다
int kor, eng, mat; // package가 생략되어 있다. 그래서 이 요소는 oop0908 패키지 안에서만 접근 가능하다.
private int aver; // Sungjuk 클래스 내부에서만 사용이 가능하다.
// 멤버 함수 method
private void view() {} // view() end
void calc() { // package가 생략되어 있다.
// 클래스 내부의 멤버들 간에는 Access Modifier와 상관없이 접근 가능하다.
view();
aver=(kor+eng+mat)/3;
} // calc() end
public void disp() {
System.out.println(name);
System.out.println(kor);
System.out.println(eng);
System.out.println(mat);
System.out.println(aver);
} // disp() end
} // class end
'⁂ Java > : 기본 익히기' 카테고리의 다른 글
[JAVA] #5-3 생성자 함수(Constructor) (0) | 2022.09.08 |
---|---|
[JAVA] #5-2 New 연산자 - 참조 자료형을 이해해보자 (0) | 2022.09.08 |
[JAVA] #4-4 메인(main) (0) | 2022.09.07 |
[JAVA] #4-3 자바의 함수 호출 방식 (0) | 2022.09.07 |
[JAVA] #4-2 오버로드(Overload) (0) | 2022.09.07 |