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.  패키지 생성하기


1. 패키지 생성


2. 패키지 이름 설정


3. 생성한 패키지 안에 클래스 생성


4. 생성한 클래스 확인

※ 서로 다른 패키지에 같은 이름의 클래스가 있어도 되지만, 하나의 패키지에 같은 이름의 클래스가 있으면 안 된다.

 

  • 패키지 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
반응형