[JAVA] Class 의 구성

yurinnn·2023년 12월 5일
0

Java/Spring

목록 보기
5/13

클래스 안에 있는 구성 요소를 멤버(member) 라고 부른다.

  • 멤버(member) : 생성자(constructor), 필드(field, 변수), 메소드(method)
  • 필드(field, 멤버 변수) : 클래스 안의 변수(필드)
public class Ex01 { // 클래스
	int fileName; // 필드 
    
    public Ex01(){
    	// 생성자 
    }

	// 메서드(Method)
	public static void main(String[] args){
		// 특정 기능을 구현하는 곳
	}
}

🔵 생성자 (constructor)

  • class 를 객체화 해주고, 클래스에서 객체화시 생성자가 가장 먼저 호출된다.
    (특별한 경우가 아니면 생략 가능)
  • 초기화 하는 수단으로 활용한다. (초기화란 최초의 값을 주는 것)
  • 자바에서 생성자의 이름은 해당 클래스의 이름과 같아야한다.
  • new 키워들 사용하여 객체를 생성할 때에 호출되는 것이 생성자이다.

예시 1)

MyApiClass api = new MyApiClass(); 
  • 여기서 api 는 MyApiClass라는 클래스의 객체에 대한 주소를 가지는 변수이다.
  • 생성된 MyApiClass 객체의 주소를 api 변수에 대입한다.
api.fileName = "document";
  • 객체의 'fildName' 이라는 멤버에 접근할 때는 레퍼런스 변수 뒤에 점(.)연산자를 붙인다.

예시 2)

Car 클래스

public class Car {
	// 멤버 변수 (필드) 생성
	int gear = 0; // 기어
	boolean on = false; // 시동이 걸려있는지 여부

	// 생성자 호출 (초기화값 지정)
	public Car() {
		// 아래 값은 누가 전달하지 않아도 스스로 초기화 가능
		gear = 0;
		on = false;
	}

	// 시동거는 메소드 (꺼져있는 시동이 켜지면 true)
	void start() {
		if(on==false) { // on==false 면
			on=true; // on 을 true 로 바꾸고
			System.out.println("시동이 걸렸습니다.");
		}else { // on==true 면 실행
			System.out.println("이미 시동이 걸려있습니다.");
		}
	}

	// 기아변속 메소드
	void change(int gear) {
		this.gear = gear; // 위에있는 int gear와 이름이 같기 때문에 this를 붙여준다.
		System.out.println(this.gear + " 단으로 변속되었습니다.");
	}
}

Main 클래스

public class Main {

	public static void main(String[] args) {
		// 1. Car 객체화
		Car car = new Car()

		// 2. 원하는 메소드 호출
		car.start();
		car.start(); // 시동 다시 걸기

		// 3. 원하는 기어변속 값 호출
		car.change(2);

		// 4. 원하는 필드 호출
		System.out.println(car.gear);
		System.out.println(car.on);
	}
}
/*
결과 :
시동이 걸렸습니다.
이미 시동이 걸려있습니다.
2 단으로 변속되었습니다.
2
true
*/

🔵 메소드 (method)

  • 클래스(Class)의 내부에 존재하는 영역으로, 특정 기능을 하는 코드를 묶어서 나타내는 것이다. 즉, 특정 기능을 수행하기 위한 코드들의 집합체이다.
  • 메소드(method)는 코드를 재사용할 수 있게 해준다.

📍 메서드의 구조

메서드는 메서드명, 매개변수(parameter), 실행문, 반환(return) 타입으로 이루어진다.
return이 없으면 void, 있으면 반환 타입이 있어야 한다.

  • 매개 변수(parameter) : 호출에서 입력한 값을 로직으로 매개 한다는 의미
  • 인자(argument) : 메소드를 호출할 때 전달된 값 (매개 변수의 값)
    관습적으로는 매개변수와 인자를 구분하지 않고 부르는 경우도 많다.
public class Toast {

	// return 이 없기 때문에 void 로 지정 
	public static void main(String[] args) {
		String dish = "";
		dish = toaster("식빵");
		System.out.println(dish);
	}
	
	// 반환 타입 : static String 
    // 메서드명 : toaster 
    // 매개변수 : String input
	static String toaster(String input){ 
		System.out.println(input+" 이 구워지고 있다."); // 실행문
		return "구워진"+input; // 반환문
	}
}

📍 메소드의 정의와 호출 :

직접 메소드를 만드는 것을 정의라고 하고, 만들어진 메소드를 실행하는 것을 호출이라고 한다.

  • 같은 로직을 여러 번 사용해야 할 때, 메소드를 정의하고 로직을 추가한다. 그리고 사용할 메소드에서 호출한다. (재활용성)
// numbering이라는 이름의 메소드를 정의하고 있다. 
public static void numbering(){
	int i = 0;
    while(i<10){
    	i++;
    }
}

// numbering 메소드가 main이라는 이름의 메소드 안에서 호출되고 있다.
public static void main(String[] args) {
	numbering(); // numbering 메소드의 로직이 실행된다. 
    numbering();
}

📍 Main 메소드 :

main 메소드는 규칙이다. 만들고 싶은 프로그램이 있다면 반드시 public static void main(String[] args)가 이끄는 중괄호 {} 안에 실행되기를 기대하는 로직을 위치시켜야 한다.
그럼 자바를 실행할 때 main 메소드를 최초로 실행한다.

🔵 필드 (field)

  • 객체 내에서 값을 지정할 멤버 변수
  • 선언된 위치에 따라 클래스 변수(static variable), 인스턴스 변수(instance variable), 지역 변수(local variable)로 구분된다.
profile
슬기로운 개발 생활

0개의 댓글