TIL 10일차. 메서드

김기현·2025년 2월 23일

1.메서드(Method)

메서드란?

수학의 함수와 비슷하며 호출을 통해 메서드 내부의 함수에 작성된 연산을 진행하여 사용한다.

메서드 표현식

[접근제한자][예약어] [반환형] 메소드명([매개변수]) {
//기능정의
}

메서드 접근제한자

public : 어디서든 접근이 가능하다
protected : 자손 클래스에서도 접근이 가능하다
(default) : 같은 패키지에서 접근이 가능하다
private : 같은 클래스에서만 접근이 가능하다


메서드 예약어

static : static 영역에 할당하여 객체 생성 없이 사용하며 싱글톤 패턴이라고도 한다
ex) Math.random();
싱글톤 패턴 : 객체의 인스턴스를 단 하나만 생성하는 패턴
final : 종단의 의미로 상속 시 오버라이딩이 불가능하다
abstract : 미완성 메서드를 의미하며 상속하여 오버라이딩으로 완성시켜 사용한다
synchronized : 동기화 처리하며 공유자원에 하나의 스레드만 접근 가능하다
동기 : 순서대로 실행 비동기 : 동시에 모두 실행
스레드 : 프로그램이 동시에 여러 작업을 할 수 있도록 돕는 기능(일꾼)
**스레드가 많을 경우 동기화를 통해 오류를 줄인다
static final : static과 final의 의미를 동시에 지닌다

메서드 반환형

void : 반환형이 없음을 의미하며 반환값이 없을 경우 반드시 작성한다
기본 자료형 : 연산 수행 후 반환값이 기본 자료형 일 경우 사용한다
ex) int, String, double, char, float, boolean
배열 : 연산 수행 후 반환 값이 배열인 경우 배열의 주소값이 반환된다
클래스 : 연산 수행후 반환 값이 해당 클래스 타입의 객체일 경우 해당 객체의 주소값이 반환

메서드의 매개변수

() : 매개변수가 없는것을 의미한다
기본자료형 : 기본형 매개변수 사용 시 값을 복사하여 전달하며 매개변수 값이 변경되도 본래의 값은 변경되지 않는다
배열, 클래스 : 배열과 클래스 등 참조형을 매개변수로 전달 시 주소값을 전달한다
가변인자 : 매개변수의 개수를 유동적으로 설정하는 방법으로 가장 마지막에 설정한다
ex) 자료형…변수명
**매개변수의 수에는 제한이 없다

**Stack의 특징으로 LIFO(Last Input First Out == 마지막에 들어온게 먼저 나간다)를 따른다.

return : 호출한 메서드로 return값을 가지고 되돌아간다…..호출된 메서드 자리에 return값을 넣는다는 뜻이다
자료형 void의 경우 return; 이 생략되어 존재한다

오늘은 메서드에 관한 예제에 대한 풀이를 통한 복습을 하며 강의를 마쳤다. 예제는 다음과 같다.
링크텍스트

1)Snack 클래스

package com.kh.practice.snack.model.vo;
public class Snack {
private String kind;
private String name;
private String flavor;
private int numOf;
private int price;

public Snack() {
}
public Snack(String kind, String name, String flavor, int numOf, int price) {
	super();
	this.kind = kind;
	this.name = name;
	this.flavor = flavor;
	this.numOf = numOf;
	this.price = price;
}
public String information() {
	return kind+"("+name+" - "+
			flavor+") "+numOf+"개 "+price+"원";
}


public String getKind() {
	return kind;
}
public void setKind(String kind) {
	this.kind = kind;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getFlavor() {
	return flavor;
}
public void setFlavor(String flavor) {
	this.flavor = flavor;
}
public int getNumOf() {
	return numOf;
}
public void setNumOf(int numOf) {
	this.numOf = numOf;
}
public int getPrice() {
	return price;
}
public void setPrice(int price) {
	this.price = price;
}
}

2)SnackController 클래스

package com.kh.practice.snack.controller;
import com.kh.practice.snack.model.vo.Snack;
public class SnackController {
private Snack s = new Snack();

public SnackController() {
}

public String saveData(String kind, String name, String flavor, int numOf, int price) {
	s.setKind(kind);
	s.setName(name);
	s.setFlavor(flavor);
	s.setNumOf(numOf);
	s.setPrice(price);
	
	
	return "저장 완료되었습니다."+
			"\n저장된 정도를 확인하시겠습니까?(y/n) : ";
}
public String confirmData() {
	return s.information();
}
}

3) SnackMenu 클래스

	package com.kh.practice.snack.view;

	import java.util.Scanner;
	
	import com.kh.practice.snack.controller.SnackController;

	public class SnackMenu {

	private Scanner sc = new Scanner(System.in);
	private SnackController scr= new SnackController();


	public void menu() {
		System.out.println("스낵류를 입력하세요.");
	
	System.out.print("종류 : ");
	String kind = sc.next();
	
	System.out.print("이름 : ");
	String name = sc.next();
	
	System.out.print("맛 : ");
	String flavor = sc.next();
	
	System.out.print("개수 : ");
	int numOf = sc.nextInt();
	
	System.out.print("가격 : ");
	int price = sc.nextInt();
	
	System.out.print(scr.saveData(kind, name, flavor, numOf, price));
	
	String result = sc.next();
	
	if(result.equals("y") || result.equals("Y")) {
		
		System.out.println(scr.confirmData());
	}else {
	}
	}
	}
profile
모든게 처음

0개의 댓글