클래스
클래스의 생성
- 클래스는 틀이고, 객체는 실체이다. 클래스를 바탕으로 실체를 만들면 객체가 된다.
- 클래스의 변수나 메소드는 메모리 공간에 할당되어 있지 않지만, 객체의 변수나 메소드는 메모리 공간에 할당된다.
- 객체 생성 방법 : new 키워드를 이용한다. (Ex. Fruit buyer = new Fruit)
- 생성된 객체는 인스턴스(Instance)라고 부르고, 객체를 생성하는 행위를 인스턴스화(Instantitaion)라고 한다.
- 객체가 생성되면 해당 메모리 주소 값이 참조 변수에 저장된다. 참조 변수에 의해서 객체에 접근이 가능하다.
- 객체가 생생될 경우, 멤버 변수에 값이 할당되어 있지 않았다면, 자동으로 기본 값으로 초기화 된다.
- 클래스 선언 시 접근 제한자는 public과 default(생략)만 가능하다.
- 클래스의 구성 요소는 필드, 메서드, 생성자로 이루어 진다.
public class test {
public static void main(String[] args){
Fruit f = new Fruit("Melon");
f.FruitName();
}
}
public class Fruit{
private String Name;
public Fruit(String n){
Name=n;
}
public void FruitName(){
System.out.println("Fruit Name is "+Name);
}
}
클래스 구성 요소 - 필드
- 필드는 클래스 내 멤버 변수를 의미한다.
- 필드 구성 요소에는 클래스 변수(static variable), 인스턴스 변수(Instance Variable), 지역 변수(Local Variable)가 있다.
- 클래스 변수 : static 변수라고 하며, 인스턴스를 생성하지 않고, 클래스 공통으로 가지고 있는 변수.
- 인스턴스 변수 : 객체 인스턴스를 생성한 후 사용할 수 있는 변수. 인스턴스마다 독립적으로 존재한다.
별도의 초기화를 하지 않으면, 객체 생성 시 기본값으로 초기화 된다.
- 지역 변수 : 생성자, 메소드 내에서 사용되는 변수. 생성자, 메소드가 끝난 후 소멸된다.
클래스 구성 요소 - 메소드
- 클래스에서 메소드는 클래스 메소드(Static Method), 인스턴스 메소드(Instance Method)가 있다.
- 클래스 메소드는 static메소드로 인스턴스를 생성하지 않고 사용할 수 있다.
- 인스턴스 메소드는 인스턴스 생성 후 사용할 수 있다.
필드 읽기, 수정, 객체 간 데이터 전달 등 다양한 기능을 수행한다.
클래스 구성 요소 - 생성자
- 클래스 생성 시 생성자가 호출된다.
- 필드의 초기화 부분을 일반적으로 생성자에서 실행한다.
패키지
패키지란?
- 패키지는 단순히 디렉토리를 나누는 개념이 아니다.
- 패키지는 소스파일에 별도의 선언을 통해서 만들어진다.
- package 키워드를 이용하여 클래스를 패키지에 묶는다.
package Mart;
public class Fruit{
private String Name;
public Fruit(String n){
Name=n;
}
public void FruitName(){
System.out.println("Fruit Name is "+Name);
}
}
패키지 사용
- import 키워드를 이용하여 패키지에 선언된 클래스를 패키지 부분을 생략하여 간편하게 사용할 수 있다.
- *를 이용하여, 하나의 패키지 안에 있는 여러 클래스들을 한 번의 import 선언을 통해서 사용할 수 있다
- 패키지를 import한 경우 해당 패키지만 접근이 가능하고, 하위 패키지는 접근이 불가능하다.
ex. import test.t1.*; 를 선언해도, test.t1.t2.t3는 접근이 불가능하다. 따로 import가 필요하다.
public class test {
public static void main(String[] args){
//패키지.클래스 형태로 선언이 필요하다.
Mart.Fruit f = new Mart.Fruit("Melon");
f.FruitName();
}
}
import Mart.*;
public class test {
public static void main(String[] args){
// import 키워드를 이용하여 패키지선언 부분을 생략할 수 있다.
Fruit f = new Fruit("Melon");
f.FruitName();
}
}
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] 오버라이딩(Overriding) 과 오버로딩(Overloading) // 다형성 (0) | 2021.01.20 |
---|---|
[JAVA] 상속(Inheritance) (0) | 2021.01.20 |
[JAVA] 객체의 생성, 생성자 (0) | 2021.01.20 |
[JAVA] 자료형, 배열, 상수, 형변환 (0) | 2021.01.20 |
[JAVA] 자바의 시작 (0) | 2021.01.20 |
댓글