메소드
메소드는 여느 언어의 메서드와 유사하다. 객체 안에 선언되며 객체가 가지고 있는 기능을 표현한다. 반드시 클래스 내부에 선언하며, 호출해서 사용하고 재귀호출도 가능하고 리턴값도 가진다.
메소드 작성법
modifiers returntype method이름( 파라메터.... 데이터타입 변수명, 데이터 타입 변수명 .... ) { 내용 }
(예) public static void main( String [] args ) { ... }
메소드는 위와 같은 형태를 갖는다.
Access modifiers (접근 제한자)
public - 어디서나 아무나 접근 가능
protected - 상속관계일 경우 혹은 같은 폴더(패키지) 내에서 어디서나 접근 가능
default(생략할 경우) - 같은 폴더(패키지) 내에서 아무나 접근 가능
private - 같은 클래스 내부에서만 접근 가능
위에서 넷 중에 하나는 반드시 나와야 하고 아래접근 제한자들도 하나 이상 붙여서 쓸 수 있다.
static
final
abstract
synchronized
return type
return type은 생략이 불가능하며 반드시 아래 중 하나를 포함해야 한다.
void - 리턴값 없음
기본 변수형
오브젝트형
메소드 호출
일반적인 방법
호출하려는 메소드가 선언되어 있는 클래스의 인스턴스를 new 키워드로 생성해서 인스턴스의 메소드를 호출한다.
//인스턴스 생성 ClassName className = new ClassName(); //생성된 인스턴스의 메서드 호출 className.methodName();
static 메소드
static 으로 선언한 메서드의 경우 인스턴스를 생성할 필요없이 바로 호출 가능하다.
ClassName.methodName(); //Math.random();
같은 class 내부에서 method 호출
같은 클래스 내에 선언된 메소드는 바로 호출 가능하다.
this.methodName(); //또는 methodName();
클래스와 접근제한자
클래스 앞에는 public/default만 접근제한자로 사용될 수 있다.
파일 내에 public 클래스가 있다면 반드시 public 클래스명이 파일명이 되어야 한다.
(여러 개의 클래스를 한 개의 파일에 작성할 수 있지만 컴파일하면 여러개의 클래스로 나뉘어져 컴파일 된다)
BBB.java 파일이라면 BBB 클래스에서 main 메소드를 찾게 될 것이다.
그러나 AAA클래스가 public이라면 AAA에서 main 메소드를 찾게 될 것이다.
메인메소드가 없어도 컴파일은 가능하다. 그러나 실행이 되지 않는다.
this
this 는 생성된 현재 인스턴스를 뜻한다.
super
자식에서 부모를 호출시 부모를 가리킨다.
지역 변수
method 내부에 선언된 변수로 반드시 초기화가 필요하다.
전역변수
class 내부에 선언된 변수로 자동으로 초기화된다. 또한 전역 변수 앞에도 접근 제한자를 붙일 수 있다.