Cohe

07 Class, Method, Package 본문

개발 언어/JAVA

07 Class, Method, Package

코헤0121 2024. 3. 13. 18:48
728x90

클래스

  • 인스턴스 객제 생성
  • 객체 생성 명령어
    • ClassName instanceName = new Constructor();
    • 생성자는 클래스 이름과 같음
    • 생성자의 역할은 맴버변수(속성) 초기화 혹은 클래스 구동을 위한 사전동작을 구현
package obj;

public class Pen {
    //클래스 안에 코드
    //attribute (속성, 멤버변수), constructors (생성자), method

    //attribute (속성, 멤버변수)
    public String color;//패키지 관계 없이 불러 올 수 있음
    int price; //default 같은 패키지 내에서 불러올 수 있음

    //메서드    
    public void write(){
        System.out.println("hello world");
    }

    public Pen(){ //기본 생성자
        super();
    }

}
  • 클래스 사용하는 이유
    • 대량으로 코드를 반복적으로 사용하는 경우에 사전에 틀을 만들어 사용하기 위해서 클래스 사용함.
    • 코드 재사용하여 코드를 최소화 하여 작업할 수 있음.
  • 생성자
    • 생성자는 반드시 클래스 안에 하나 이상 선언해야 함
    • 선언하지 않으면 JVM이 대신하여 기본 생성자를 자동으로 만들어줌
    • 기본 생성자는 매개변수를 가지고 있지 않은 형태로 자동으로 만들어지는 경우에는 내용이 없다
  • 생성자 만드는 규칙
    1. 생성자 이름은 클래스 이름과 대소문자까지 정확히 같아야 한다. 클래스 이름과 다른 이름으로 만들면 그것은 메서드 취급
    2. 생성자는 메서드와 달리 반환 유형을 적지 않는다.
    3. 생성자는 다른 유형으로 여러개 생성이 가능하다. → 생성자 오버로딩
      • over Riding : 상속의 개념
      • 오버로딩 : 이름이 같음
    • alt+shift+s : 생성자 자동생성
    • 생성자 예시

// 생성자 생성 예시....  
public Pen() { // 기본 생성자...  
color = "black";  
}
// 멤버 초기화 생성자!
public Pen(String init_color) {
    color = init_color;
    System.out.println("생성자를 이용하여 color값 초기화");
}

public Pen(String init_color, int init_price) {
    color = init_color;
    price = init_price;
    System.out.println("생성자를 이용하여 color, price 값 초기화");
}

public Pen(String color, int length, int price) {
    this.color = color;
    this.length = length;
    this.price = price;
}

// 오버로딩으로 구분되는 생성자 혹은 메서드는 매개변수의 숫자와 타입에 의해서 결정!!
public Pen(int length, String color) {
    this.color = color;
    this.length = length;
}


public int getPrice() {
    return price;
}

메서드

  • 메서드의 반환 설정은 키워드 'return'을 사용합니다.
  • return은 메서드 실행을 끝내고, 결과 값을 호출될 부분에 반환하는 키워드
  • 사용법은 return '반환값' 으로 사용하고, 반환 값이 없이 사용되는 return은 함수의 종료만을 의미하게 되어 호출된 위치로 이동하게 됨.
  • 만약 return에 연산식을 사용하여 처리하는 그 결과 값과 제어(호출위치로 이동)가 함께 동작합니다.
    메서드 형식(선언 방법)
    <반환 유형> <메서드 식별자-이름>(매개변수) {
      기능 상세부분... 
    } 
    매서드 구분, 매개변수와 반환값으로 구분...
  • 유형1 : 매개변수가 있고, 반환값이 있는 경우! 전달 인자(o), 반환값(o)
  • 유형2 : 매개변수가 있고, 반환값이 없는 경우! 전달 인자(o), 반환값(x)
  • 유형3 : 매개변수가 없고, 반환값이 있는 경우! 전달 인자(x), 반환값(o)
  • 유형4 : 매개변수가 없고, 반환값이 없는 경우! 전달 인자(x), 반환값(x)

** 매개변수(parameter)

  • 매개변수는 메서드가 실행될 때에 필요한 데이터를 외부로부터 받기 위해서 사용함.
  • 매개변수도 변수의 일종으로 데이터 타입과 함께 선언해서 사용해야 합니다. 단, 초기화는 하지 않음
  • 매개변수를 여러개 선언할 수 있고, 메서드가 외부로부터 받을 데이터가 없다면 선언하지 않아도 됨.
    그리고, 매개 변수가 없다면 반환 유형 처림 void는 사용하지 않고, 소괄호로 안을 비워 둡니다.

** 반환 유형(return type)

  • 반환 유형은 메서드가 실행한 후에 메서드를 호출한 곳에서 반환하는 값을 전달하는 데이터...
  • 메서드는 반환값이 있을 수 있고, 없을 수도 있는데 없는 경우에는 반환 유형에 "void"를 사용합니다.
  • 반환값이 있는 메서드를 호출할 때는 해당 반환 유형에 맞는 변수에 반환값을 저장해야 합니다.
  • 메서드 실행에 결과값을 반환할 때는 return 키워드를 사용합니다.

오버로딩

  • 오버로딩으로 구분되는 생성자 혹은 메서드는 매개변수의 숫자와 타입에 의해서 결정!!
  1. 오버로딩을 위해서는 이름이 같아야 한다.
  2. 접근 제한자나 반환유형은 오버로딩에 영향을 주지 않는다
  3. 매개변수의 유형(타입)이 달라야 한다.
  4. 매개변수의 개수 및 순서가 달라야 한다.

패키지

패키지란?
서로 연관된 클래스들의 묶음을 말함(package) 패키지 안에는 여러 클래스를 포함하고 있음.

특정 패키지를 불러서 사용하려면, import 키워드를 사용...

ex) import java.util.Arrays
import [패키지명].[클래스명] => 패키지명 : java.util , 클래스명 : Arrays
패키지 명은 처음부터 끝까지 전체 패키지를 모두 표현해야 함.

  • 특정 패키지내에 클래스를 호출하는 경우,
    import java.util.Arrays
    import java.util.Scanner // 입력 클래스...
    import java.io.PrintWriter // 화면 출력 클래스
  • 특정 패키지 내에 모든 클래스를 호출하는 경우,
    import java.util.*
    • 클래스 생성시에 현재 클래스의 패키지 위치를 선언... (생략시 default 패키지를 가리킴 - src폴더 위치... )
      • 패키지를 가리키는 클래스 내의 키워드는 package 키워드를 사용! 다른 패키지 위치에 있는 클래스는 불러올 때는 import 키워드를 사용함...

패키지 생성 규칙

  • 패키지 이름은 영문 소문자를 이용하는 것을 권장!
  • 대분류와 소분류 패키지들을 구분. 구분은 "."(dot)을 이용함.
  • 루트 패키지 이름은 java. 으로 시작할 수 없음.
  • 자바의 키워드들도 패키지 이름으로 사용할 수 없음.
  • import 시에는, 중분류가

'개발 언어 > JAVA' 카테고리의 다른 글

09 Usage Modifier  (0) 2024.03.15
08 상속, modify  (0) 2024.03.14
회원관리 시스템 작성  (0) 2024.03.12
06 class  (0) 2024.03.12
05 While문~ 변수  (0) 2024.03.11