Framwork/Java기초
Chapter 9. 패키지와 접근 제어
김엉배
2023. 8. 6. 23:26
728x90
반응형
목차
1. 패키지(package)
2. 패키지 생성하기
3. 접근 제어
4. 메소드 오버라이딩과 접근 제어
1. 패키지(package)
- 연관된 클래스와 인터페이스들을 모아 놓은 것을 말한다. 윈도우의 폴더와 같은 개념이다.
- ex_1) java.lang 패키지에 있는 String과 System 클래스 사용
public class code155 {
public static void main(String[] args) {
java.lang.String name = "Alice";
int age = 10;
java.lang.System.out.println(name + " is " + age + " years old.");
}
}
- ex_2) Scanner 클래스
import java.util.Scanner;
public class code157 {
public static void main(String[] args) {
Scanner scin = new Scanner(System.in);
System.out.print("Enter your name : ");
String name = scin.next();
System.out.println("Your are " + name);
scin.close();
}
}
2. 패키지 생성하기
※ 서로 다른 패키지에 같은 이름의 클래스가 있어도 되지만, 하나의 패키지에 같은 이름의 클래스가 있으면 안 된다.
- 패키지 import 하기
package bookpkg;
public class Book { // 클래스에 public이 붙어야 다른 패키지에서 접근 할 수 있다.
// private 맵버는 자기 클래스 안에서만 접근 가능.
private int code;
private String title;
private int price;
public Book() {}
// 생성자 앞에 public이 붙어야 Book 객체를 생성할 수 있다.
public Book(int code, String title, int price) {
this.code = code;
this.title = title;
this.price = price;
}
// public 메소드는 다른 패키지에서 접근할 수 있다.
public int getCode() {return code;}
public String getTitle() {return title;}
public int getPrice() {return price;}
public void printBookInfo() {
System.out.println("code: " + code);
System.out.println("title: " + title);
System.out.println("price: " + price);
}
}
package usebookpkg;
import bookpkg.Book;
public class UseBook {
public static void main(String[] args) {
// 에러 발생 : 어느 패키지에 있는 클래스 인지 명시해야 한다.
Book bk = new Book(101, "algorithms", 250000);
bk.printBookInfo();
}
}
- 클래스명 앞에 패키지명까지 붙이는 방법
package usebookpkg;
public class UseBook {
public static void main(String[] args) {
bookpkg.Book bk = new bookpkg.Book(101, "algorithms", 250000);
bk.printBookInfo();
}
}
- 패키지를 import 하여 사용하는 방법
package usebookpkg;
import bookpkg.Book;
public class UseBook {
public static void main(String[] args) {
Book bk = new Book(101, "algorithms", 250000);
bk.printBookInfo();
}
}
3. 접근 제어
접근 제어자 | 의미 | |
private | 같은 클래스 내에서만 접근 가능 | 접근이 어렵움. |
디폴트 제어 | 같은 패키지 내에서만 접근 가능함. | |
protected | - 같은 패키지 내에서 접근 가능함. - 다른 패키지에 있는 자식 클래스에서 접근 가능함. |
|
public | 어디에서나 접근 가능함. 제약 x |
4. 메소드 오버라이딩과 접근 제어
- 자식 메소드가 오버라이딩하는 부모 메소드의 접근 제어보다 더 엄격한 제어를 가질 수 없다.
- ex_1)
public class Parent {
public void show() { // 부모 show()는 public 제어
System.out.println("I am parent show()");
}
}
public class Child extends Parent {
// 에러 발생(Cannot reduce the visibility of the inherited method from Parent)
void show() {
System.out.println("I am child show");
}
}
728x90
반응형