############### 필드 ##################
클래스를 벗어난 부분은 모두 필드임.(위나 아래나 동일)
필드 : 클래스에서 필요한 속성값
field 만들기
점점 정보들을 은닉화한다.(숨긴다) 외부에 공개되는 클래스는 극히 드문 추세(은닉화)
특히 필드들의 경우 '절대로' 직접 입력 출력을 할 수 없게 만들어준다.
인캡슐라이제이션 -> 메소드들을 필드마다 만들어서
getter, setter 만들어주기
getter : 필드의 값을 반환한다.
setter : 파라미터의 값을 필드에 저장한다.
빈칸에서 우측버튼 - source - generate getter, setter
############### this ##################
자기 자신을 참조하는 객체(만들어진 객체 자신)
static 메소드가 아니라면 0번째 매개변수로 자신을 참조하는 this가 있다고 보면 된다.
필드, 메소드는 점(.)으로 접근
this를 사용해야 하는 경우 : 매개변수명과 멤버변수의 필드명이 동일할 경우 this를 사용하지 않으면 원하는 결과를 얻지 못할 수 있다.
############### 메소드 ##################
메소드는 프로그래머가 준 값(파라미터, 인수)을 재료로 어떤 행동을 하고, 그 결과(리턴값, 반환값)로 생긴 것을 돌려주는 처리상자.
메소드는 코드를 재사용할 수 있게 해준다.(★재활용, 코드량 줄일수있음, 유지보수 유리) -> 가치를 높이는 것
메소드 : 기능을 수행하는 함수
main : 자바와 개발자간의 약속(규칙) -> 자바는 main 메소드를 실행함.
############### 매개변수(parameter)와 인자(argument) ##################
public static void numbering(int limit){
매개변수
}
public static void main(String[] args){
numbering(5)
인자
}
메소드의 입력 값은 매개변수(parameter)를 통해서 이루어진다.
매개변수와 인자값은 콤마(,)로 구분.
메소드는 접근제한자 method의리턴타입 이름(파라미터) 로 선언한다.
접근제한자: public, protected, private (외부;다른 클래스 의 접근을 제한함)
public: 어디서든 접근 가능
protected: 같은 패키지 내부에서만 접근 가능
private: 외부면 어디서든 접근 불가. 같은 클래스 내부에서만 사용이 가능.
메소드의 이름들은 똑같을 수 있다.
!!!!!!!!단!!!!!!!!
메소드의 파라미터의 종류와 갯수가 같으면 파라미터의 이름, return type과는 무관하게
중복된 메소드로 판정되어서 만들 수 없다.
즉 메소드의 이름이 같을려면 parameter의 data type이 다르거나 갯수가 달라야만한다.
클래스와 이름이 똑같은 메소드가 있다.
그 메소드는 생성자(Constructor)이다.
우리가 특별히 만들지 않아도 기본생성자라는 것이 존재하는데
우리의 필드값들을 각 데이터타입의 기본값으로 초기화해준다.
생성자에는 2가지 종류가 있다.
파라미터가 있는 생성자 vs 아무 파라미터도 없는 기본생성자
"하지만" 파라미터가 있는 생성자를 만들면 기본생성자를 재정의 하지 않으면 기본생성자는 사용을 할 수 없다!
기본 생성자의 경우에는 정의해줄 시에는 이게 기본 생성자로 생성되었다는 것을 알 수 있게 field값들을 넣어준다.
예시 -> Scanner
파라미터가 있는 생성자 만들기
Student(String name, String juminNum, int kor, int eng, int math) {
this.name = name;
this.juminNum = juminNum;
this.kor = kor;
this.eng = eng;
this.math = math;
}
Student() {
this.name = "입력 아직 안됨";
this.juminNum = "입력 아직 안됨";
this.kor = 0;
this.eng = 0;
this.math = 0;
}
############### 메소드의 정의와 호출 ##################
<예시>
int plus(int a, int b){ 정수값을 리턴값으로 담는 plus라는 메소드를 선언하고, a와 b라는 파라미터 변수를 인자로 받는다.
-> 메소드명 옆 ( ) 안에 필요한 파라미터를 적음. 파라미터 역시 변수이므로 데이터 타입과 변수명을 함께 적음
* 메소드를 클래스 내에서 호출할 때는 메소드 이름으로 바로 호출하고,
밖에서 호출 할때는 '객체.메소드명()' 을 작성하여 호출한다.
System.out.println(calc.plus(1,3));
############### return ##################
return : 결과값. return 뒤에 오는 값을 메소드 외부로 출력함. 동시에 메소드를 종료시킨다.
한가지 잊지 말아야 할 점은 return을 통해서 반환할 값의 데이터 형식을 메소드의 이름 옆에 명시해주어야 한다는 것이다.
output +=i ;
output = output + i ;
위 2개는 같은 의미.
자바는 붕어빵만드는 기계는 준비되어있고, 재료만 바꿔주면 됨.
static :
같은 클래스에서 생성된 객체들과 값을 공유하는 키워드. 공유공간.
static 필드는 생성자에서 초기화할 수 없다.
프로그램 시작시 제일먼저 시스템영역 메모리 불러온다. 메소드는 클래스변수를 곧장 가져가서 쓸것
응용프로그램 실행순서(static{...} -> main() -> 생성자() -> finalize())
void :
공허(비어있다) -> return 해줄 필요없을때, 반환 값이 없을때.
parameter :
필요한 값, 입력값
메소드는 여러개의 입력 값을 가질수있다.
그렇다면 복수의 리턴? -> 배열을 통하여 가능하다.
new를 써서 공간확보후 초기화해야함.
자동생성시 이름에 자동으로 2 붙을경우 수정해서 사용하면 됨.