클래스 외부 구성요소 - 1. 패키지(Package)와 임포트(Import)

Ⅰ. 패키지(Package)와 임포트(Import)

0. 복습

 - 클래스 : 참조자료형의 설계도

 - 객체 : 참조자료형으로 참조하는 데이터

 - 객체가 가지는 것

    - 필드(속성, 내부 변수) : 객체가 가지고 있는 값(value)

    - 메소드 : 객체가 가지고 있는 기능(Function = Method)

 - 메소드

    - 생정자 : 객체가 생성되는 순간(new)에 처리할 기능을 정의한 메소드

    - 일반 메소드 : 객체의 기능을 정의한 코드 블록 (리턴타입, 메소드명, 매개변수, {몸통})

 - 메소드 오버로딩 : 리턴 타입과 메소드명이 동일한 메소드를 여러 개 지정할 수 있는 것

 

1. 패키지(Package)와 임포트(Import)

 - 패키지(Package) : 프로젝트의 하위 폴더의 개념

    - 클래스 파일을 목적별로 묶어서 관리

    - 패키지마다 이름 공간(namespace) 생성 → 클래스 이름의 충돌 방지

 - 임포트(Import) : 다른 패키지의 모든 클래스를 여기서 쓸 수 있음

 - 예시 :

// Example
// animal 패키지에 Dog.java
package animal;

// public : 다른 곳에서 Dog를 사용 가능하게 함
public class Dog {
	String breed;
	String name;
	// 모든 클래스에는 생성자가 존재 (밑에 Dog(){}가 없더라도 자동으로 생성된 것처럼 실행)
	public Dog(String breed, String name) {
		this.breed = breed;
		this.name = name;
	}
	
	public void bark() {
		System.out.println("멍멍 왈왈 컹컹");
	}
}

 

// animal 패키지에 Turtle.java
package animal;

// 외부 클래스 : 파일에서 정의한 public 클래스 외의 클래스
// 외부 클래스는 해당 파일의 public 클래스를 위한 부가 클래스 차원에서 사용
class Shell {
	
}
class leg {
	
}
class hear {
	
}
public class Turtle {
	Shell s = new Shell();
}
// Main 패키지에 main.java
package Main;

// import를 사용하면 animal 패키지에 있는 Dog 클래스를 여기서 쓸 수 있음
// import animal.Dog;
// import animal.Turtle;
import animal.*;	// .* : animal 패키지에 있는 모든 클래스를 여기서 쓸 수 있음

public class Main {
	public static void main(String[] args) {
		Dog a = new Dog("진돗개", "백구");		// 외부를 데리고 오려면 패키지 명을 붙여야함
		Turtle b = new Turtle();
		a.bark();
	}
}
// 결과 :
// 멍멍 왈왈 컹컹