본문 바로가기
  • Coding & Book
학습단/JAVA 학습단

7. 혼공자 7일차(메소드)

by 루이3 2023. 7. 11.

7일차

메소드 시그너처

  • 메소드 선언부를 메소드 시그너처라고 합니다.
선언부와 실행 블록의 요소
리턴 타입 메소드가 리턴하는 결과의 타입을 표시합니다.
메소드 이름 메소드의 기능이 드러나도록 식별자 규칙에 맞게
이름을 지어줍니다.
매개 변수 선언 메소드를 실행할때 필요한 데이터를 받기 위한
변수를 선언합니다
메소드 실행 블록 실행할 코드를 작성합니다

 

&메소드 이름 작성시 주의 사항

숫자로 시작하면 안됩니다.
특수문자를 사용하지 말아야 합니다.( _와 $는 제외 입니다.)
메소드 이름은 소문자로 작성하되 혼합된 단어이면 뒤에오는 단어의 첫글자를 대문자로 합니다.

 

 

메소드 선언과 호출

  • 메소드 선언은 리턴 타입, 메소드 이름, 매개 변수 선언실행 블록으로 구성 됩니다.
  • 메소드는 클래스 내,외부의 호출에 의해 실행됩니다.
  • 클래스 내부의 호출인 경우 다른메소드에서 메소드 이름으로 호출하면 됩니다.
  • 외부인 경우 클래스로부터 객체를 생성한 뒤 참조 변수를 이용해 호출해야 합니다.
package sec06_2.exam01;

public class Calculator {
		void powerOn() {
			System.out.println("OFF");
		}
		
		int plus(int x, int y) {
			int result = x + y;
			return result;
		}
}
package sec06_2.exam01;

public class CalculatorExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calculator myCalc = new Calculator();
		myCalc.powerOn();
		
		int result1 = myCalc.plus(4, 100);
		System.out.println(result1);
	}

}

& 매개 변수를 모를 경우

  • 매개 변수를 배열 타입으로 선언 하면 됩니다.
package sec06_2.exam01;

public class Computer {
	int sum1(int[] values) {
		int sum = 0;
		for(int i=0; i<values.length; i++) {
			sum += values[i];
		}
		return sum;
	}
}

 

 

리턴문

  • 메소드 선언에 리턴 타입이 있는 메소드반드시 리턴 문을 사용하여 작성해야 합니다.
  • 리턴문이 없을 경우 컴파일에러가 발생합니다.
  • 리턴 값이 없는 메소드는 리턴 타입으로 void를 사용합니다.

 

tip) void에 리턴 값을 사용하는 경우가 있는데 이는 메소드 실행을 강제 종료 시키는 역할을 합니다.

int plus(int x, int y) {
		int result = x + y;
		return result;
}

void run() {
	while(true) {
		if(num > 0) {
			System.out.println("YES");
		} else {
			System.out.println("NO");
			return;
		}
}

 

메소드 오버로딩

  • 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것을 메소드 오버로딩이라고 합니다.
  • 오버로딩의 사전적의미는 "많이 싣는다" 는 것입니다. (여러 기능을 담는다는 의미입니다.)
package sec06_2.exam01;

public class Calculator_2 {
	double areaRe(double width) {
		return width * width;
	}
	
	double areaRe(double width, double height) {
		return width * height;
	}	
}
package sec06_2.exam01;

public class CalculatorExample_2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calculator_2 num = new Calculator_2();
		double i = num.areaRe(10);
		System.out.println(i);
	}

}

 

인스턴스 멤버와 this

  • 인스턴스 멤버는 인스턴스와 관련된 멤버 변수와 메소드를 말합니다.
  • 인스턴스 멤버는 객체 생성 후에만 사용할 수 있습니다.
  • 객체 내부에서 인스턴스 멤버에 접근하기 위해 this를 사용할수 있습니다.
package sec06_2.exam01;

public class Car {
	String model;
	int speed;
	
	Car(String model) {
		this.model = model;
	}

	void setSpeed(int speed) {
		this.speed = speed;
	}
	
	void run() {
		for(int i=0; i<=10; i+=1) {
			this.setSpeed(i);
			System.out.println(this.model + this.speed);
		}
	}	
}

 

 

정적멤버와 static

  • 정적 멤버는 클래스에 고정된 맴버로 객체를 생성하지 않고 사용할수 있는 필드와 메소드를 말합니다.
  • 사용시 static 키워드를 추가적으로 붙여서 사용합니다.
  • 클래스 메모리로 로딩되면 정적 멤버를 바로 사용할수 있습니다.
  • 클래스 이름과 함께 . 연산자로 접근합니다.
  • 객체를 생성하지 않고 사용하므로 내부에 인스턴스 필드나 인스턴스 메소드를 사용할수 없습니다.
  • this 키워드 사용이 불가능 합니다.
package sec06_2.exam01;

public class Car_3 {
	int speed;
	
	void run() {
		System.out.println(speed);
	}
	
	public static void main(String[] args) {
		Car_3 Car3 = new Car_3(); 
		Car3.speed = 10;
		Car3.run();
	}
}

 

 

싱글톤

  • 단 하나의 객체만 만들도록 보장하는 경우가 있는데 이때 하나만 생성되는 객체를 싱글톤이라고 합니다.

 

 

final 필드

  • final필드는 초기값이 저장되면 이것이 최종적인 값이 되는것입니다.

 

상수

  • 불변의 값상수라고 합니다.
  • final 필드는 상수가 아닙니다.(객체마다 저장되기 때문입니다.)

 

 

패키지 선언

  • 클래스를 작성할때 해당 클래스가 어떤 패키지에 속하는지를 선언하는 것을 말합니다.

 

import문

  • 다른패키지에 속한 클래스등을 현재 파일에 사용하기 위해 가져오는 역할을 합니다.
  • 패키지선언과 클래스 선언사이에 작성합니다.
import 상위패키지.하위패키지.클래스이름;
import 상위패키지.하위패키지.*;

 

 

 

12. 접근제한자

  • 접근제한하기 위해 사용합니다.
  • 클래스와 인터페이스를 다른 패키지에서 사용하지 못하게 할때 사용됩니다.
public 접근 제한자 외부 클래스에서 자유롭게 사용가능하게 합니다.
protetcted 접근 제한자 같은 패키지 또는 자식 클래스에서 사용할수 있도록 합니다
private 접근 제한자 외부에서 사용할수 없도록 합니다
default 접근제한 같은 패키지에 소속된 클래스에서만 사용할 수 있도록 합니다.

 

 

13. Getter 와 Setter

  • 필드는 외부에서 접근 할수 없도록 막고 메소드는 공개하여 외부에서
    메소드를 통해 필드에 접근하도록 하는것입니다.
  • Getter은 필드 값을 외부로 리턴해주는 메소드 입니다.
  • Setter는 외부에서 값을 받아 필드를 변경하는 메소드 입니다.
  • 필드를 private로 선언하여 외부로 부터 보호하고 필드에 대한 Setter와 Getter를 작성하는것이 좋습니다.
	private boolean stop;
	
	//Getter
	public boolean isStop() {
		return stop;
	}
	
	//Setter
	public void setStop(boolean stop) {
		this.stop = stop;
	}

'학습단 > JAVA 학습단' 카테고리의 다른 글

9. 혼공자 9일차(인터페이스)  (0) 2023.07.14
8. 혼공자 8일차(상속)  (0) 2023.07.13
6. 혼공자 6일차(클래스)  (0) 2023.07.10
1주차 완료  (0) 2023.07.07
5. 혼공자 5일차(참조 타입)  (0) 2023.07.07