필드와 메소드

|

############### 필드 ##################

클래스를 벗어난 부분은 모두 필드임.(위나 아래나 동일)

 

필드 : 클래스에서 필요한 속성값

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 붙을경우 수정해서 사용하면 됨.

'Java' 카테고리의 다른 글

배열  (0) 2019.05.17
클래스와 인스턴스 그리고 객체  (0) 2019.05.17
별찍기  (0) 2019.05.17
조건문  (0) 2019.05.17
입력과 출력  (0) 2019.05.16
And