1. 메소드란
수학의 함수와 비슷하며 호출을 통해 사용
전달값이 없는 상태로 호출하거나 어떤 값을 전달하여 호출
함수 내에서 작성된 연산 수행. 수행 후 반환 값/결과 값은 있거나 없을 수도 있음
표현식
접근제한자 [예약어] 반환형 메소드명([매개변수]){
//기능정의
}
2.메소드의 예약어
static : static 영역에 할당하여 객체 생성 없이 사용
final : 종단의 의미, 상속 시 오버라이딩 불가능
abstract : 추상 메소드를 뜻함. 상속시 반드시 오버라이딩으로 완성시켜 사용해야함.
synchronized : 동기화 처리, 공유 자원에 한 개의 스레드만 접근 가능함
3. 메소드 매개변수
기본 자료형 : 기본형 매개변수 사용 시 값을 복사해서 전달. 매개변수 값을 변경하여도 본래 값은 변경되지 않음
배열/클래스 : 배열/클래스 등 참조형을 매개변수로 전달시 데이터의 주소값을 전달(얕은 복사)
가변인자 : 매개변수의 개수를 유동적으로 설정하는 방법. 가변 매개변수와 매개변수가 있으면 가변 매개변수를
마지막에 설정(자료형...변수명) --> 배열형식으로 들어간다. 즉 저 말은 자료형[] 변수명과 같다.
매개변수와 반환형의 타입은 서로 상관없다.
4. 반환
void : 반환형이 없음을 의미, 반환 값이 없을 경우 반드시 작성
기본자료형 : 연산 수행후 자료 결과가 기본자료형일 경우 사용
배열 : 연산 수행후 반환 값이 배열일 경우 주소값 반환
클래스 : 연산 수행후 반환 값이 해당 클래스 타입의 객체일 경우 해당 객체의 주소값이 반환
호출한 곳 에서 받을 경우 반환 값에 맞는 자료형으로 받아야함
5.return
1.해당 메소드를 종료하고 자신을 호출한 메소드로 돌아가는 예약어
반환값이 있다면 반환 값을 가지고 자신을 호출한 메소드로 돌아감
(void의 경우 return이 생략되어있을 뿐 존재한다.)
2.반복문에 사용할 경우 모든것을 종료하고 자신을 호출한 위치로 돌아간다.
6. 메소드의 종류
1)매개변수가 없고 리턴 값이 있을 경우
접근제한자 [예약어] 반환형 메소드명(){
//기능정의
return 값/변수; (반환형 == 값/변수의 자료형)
}
2)매개변수가 있고 리턴 값이 없을 경우
접근제한자 [예약어] void 메소드명(자료형 변수명){
//기능정의
}
3)매개변수가 없고 리턴값이 없을 경우
접근제한자 [예약어] void 메소드명(){
//기능정의
}
4) 매개변수가 있고 리턴값이 없을 경우
접근제한자 [예약어] 반환형 메소드명(자료형 변수명){
//기능정의
return 값/변수; (반환형 == 값/변수의 자료형)
}
메소드 안에 메소드를 사용 할 수있다.
public void method1(int a){
System.out.println(a);
}
public void method2(){
int a = 1;
int b = 2;
method1(1+2);
}
--> method2를 호출할경우 method1의 식이 작동하여 3이 출력된다.
7.getter/setter
getter/setter는 캡슐화된 객체의 전역변수를 사용 하기 위한 메소드이다.
사용할 변수가 있는 객체의 클래스에 작성한다.
private int pNum;
private String name
private double t;
private boolean turef
getter : 필드(클래스)에 저장된 값을 읽어서 요청한 곳으로 보내기 위한 메소드이다.
접근제한자 자료형 get/is변수명(){ (get뒤에 오는 변수명의 첫글자는 대문자이다)
retrun 변수명;
}
public String getName(){
return name;
}
public double getT(){
return t;
}
단 변수가 2단어이상으로 이루어져있고 첫단어가 문자 한개면 소문자로 사용한다.
public int getpNum(
return pNum;
)
boolean의 경우는 get 대신 is를 쓴다.
public boolean isTruef(){
return truef;
}
setter : 필드(클래스에) 값을 저장(초기화)하기 위해 사용 한다.
이름 명명 규칙은 getter와 동일하다(
1. set 뒤에 오는 변수명의 첫글자는 대문자,
2단어이상이고 첫단어가 문자 한개면 소문자)
접근제한자 void set변수명 (자료형 변수명){()
(this.)필드명 = 값/변수명;(매개변수를 그대로 받아 사용할 수있다).
}
public void setName(String name){
this.name = name;
}
public void setT(double t){
this. t= t;
}
public void setpNum(int pNum){
this.pNum =pNum ;
}
public void setTruef(boolean truef){
this. truef= truef;
}
set메소드에 한 번에 여러개를 지정하는 방식도 가능하다.
public void setName(int type){ // 외부 정수값을 받아 와서 이름과 불린값을 설정할 때
switch(type) {
case 1: this.name = 김철수;
this.truef = false;
case 2: this.name = 김영희;
this.truef = true
};
}
private 접근제한자를 가진 static 변수를 set을 하려면 this. 대신 클래스명. 을 사용한다.
public void set변수명(자료형 변수명){
클래스명.변수명 = 변수명
}
8.오버로딩
한 클래스 내에서 같은 이름의 메소드를 여러개 정의하는것
(생성자는 메소드가 아닌것 같지만, 특별한 메소드로도 볼 수 있다)
1)성립조건
같은 메소드 이름, 다른 매개변수 선언부 (매개변수 타입, 개수, 다른 타입간의 순서)
메소드의 리턴타입과 접근제한자는 오버로딩의 조건과 관계가 없다.
'JAVA > 변수 및 객체, 기타' 카테고리의 다른 글
상속 (0) | 2019.12.17 |
---|---|
객체 배열 (0) | 2019.12.16 |
객체지향 3대 특성 (0) | 2019.12.15 |
클래스의 변수 (0) | 2019.12.15 |
클래스 (0) | 2019.12.15 |