본문 바로가기

Java

메소드와 인스턴스멤버, this.

메소드

객체의 안에 존재하는 동작을 위한 중괄호{}블록.

객체를 생성 후 메소드를 호출하게되면 블록안의 모든 코드가 실행된다. 

객체간의 데이터 전달을 수행하고 외부에서 매개값을 받거나 값을 리턴 할 수도 있다.

메소드 선언 : 메소드의 선언의 경우 리턴타입. 메소드 이름 (매개변수){실행블록} 이다. 

예를 들어 int method (int x){ return x;} <= 리턴값이 있는 메소드 

리턴값은 메소드의 타입에 따라 있기도 없기도 하다. 

매개변수의 수를 모를경우

외부에서 많은 값을 받는대 몇개나 받을지 알 수 없을때는 배열을 매개변수로 받아 사용한다.

int sum(int[] values){   }< == 이런 방식의 메서드를 만들고 

호출할때는 int[] values ={1,2,3,4,5} 와 같이 배열을 만든 후 매개변수로 values를 넣어주는 식으로 사용한다.

다른 방식으로는 

int 변수명 = sum(new int[] {1,2,3,4,5})<이런식으로 한번에 처리할수도있다.

좀더 간편한 방법으로는 

메소드를 만들때 

int sum(int ... values){   } << 이런반식으로 만든다. ... 를 사용하면 여러 값이 들어온다는 뜻이고 메소드를 호출할때

int 변수명 = sum(1,2,3,4,5,6,)<< 이런식으로 사용할수있다 메소드 내부에서는 배열과같이 반응해서 동작한다.

리턴

retrun의 경우 메소드의 타입int, double...등과 같이 매개변수를 받아 연산후 값을 받아올때 사용한다. 

하지만 void같이 리턴값이 없는 타입도 return을 사용할수 있는데 이 경우 리턴 부분에서 메소드가 종료된다. 

while ,문에서 break와 같이 사용할 수 있지만 return의 경우 메소드를 강제종료 시키버리기때문에 뒤에 코드가 있는 경우

그냥 break를 사용하자.

메소드 호출

메소드의 호출의 경우 외부와 내부 호출이 있다. 

객체 내부에서의 호출같은 경우 그냥 "메소드명();" 으로 호출하면된다. 

객체외부에서 사용할 경우 객체의 주소를 참조하는 "참조변수명.메소드명();" 의 방식으로 사용한다.

메소드 오버로딩

생성자와 같이 메소드도 오버로딩이 가능하다. 

하나의 이름으로 여러 기능을 사용하기 위해 만들고 조건의 경우  같은 이름의 메소드, 매개변수의 타입, 개수, 순서가 달라야한다. 

ex)

int plus(int x, int y){   }

double plus(double x, double y){   }

이런 식으로 사용한다. 

이 경우 메소드를 호출할때 

int x=10; double = 20.3;

plus(x,y); 의 경우 에러가 날까?? 

안난다. 우리 위대한 자바는 알아서 자동변환해준다. 

인스턴스 멤버

인스턴스 멤버란?

객체를 생성했을때 사용할 수 있는 필드와 메소드를 말한다. 이때 각각 인스턴스 필드. 인스턴스 메소드라고 한다. 

this.

객체외부에서 참조변수를 사용해 객체에 접근하는 것과 같다. 객체 내부에서 필드에 접근하기 위해 this.를 사용한다. 

생성자, 메소드의 매개변수명의 경우 헷깔리지 않기 위해 필드명과 중복해서 사용한다. 이때 그 매개변수의 값을 필드에 넣고싶다면??

생성자. 매개변수의 안에서 필드를 불러오는데 일단 그안에서는 매개변수 명이 먼저기 때문에 그냥쓸수는 없다. 

이때 this.를 사용함으로서 객체 자신의 필드인것을 명확하게 한다.

모든 과정은 첨부된 자바파일을 확인하면 알수있다.

JavaStudy.zip

  


'Java' 카테고리의 다른 글

메소드 재정의(Override)와 몇가지..  (0) 2018.12.12
상속이란?  (0) 2018.12.05
접근 제한자 ,Getter/Setter  (0) 2018.11.22
정적인 자식 Static  (0) 2018.11.21
자바 개발환경 구축  (0) 2018.10.09