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 |