JAVA - Method

석재호·2022년 1월 31일

JAVA

목록 보기
5/12
post-thumbnail

Method

  • Method란?

    • 현실의 객체가 하는 동작을 프로그래밍 화
    • 어떤 작업을 수행하는 명령문의 집합
  • Method를 작성하는 이유

    • 반복적으로 사용되는 코드의 중복 방지
    • 코드의 양을 줄일 수 있고 유지 보수가 용이
	class Person {
    	String name;
        int age;
    }
    
    Person p1 = new Person();
    System.out.println(p1.name+p1.age);
    
    Person p2 = new Person();
    System.out.println(p1.name+p1.age);
   

위와 같이코드가 반복되는 경우

	class Person {
    	String name;
        int age;
        
        void info{
        	System.out.println(name+age);
        }
    }
    
    Person p1 = new Person();
    p1.info();
    
    Person p2 = new Person();
    p2.info(); 

Method를 만들어 간략하게 할 수 있다.

  • Method 작성 방법

    • 메소드는 선언부와 구현부로 나뉜다.
      	제한자 리턴타입 메서드이름(타입 변수명, 타입 변수명) //선언부
          {	
          	//구현부
          	//해당 구동 코드
          }
    • 선언부

    1. 리턴타입
      • 리턴 타입은 하나만 적용가능
      • 결과를 받을 때 묵시적 형 변환 적용
      • 아무것도 리턴하지 않을 경우 void
    2. Method 이름
      • Method가 수행하는 작업을 쉽게 파악할 수 있도록 의미 있는 이름 사용
    3. Paramether 목록
      • Method 호출 시점에서 넘겨줘야 하는 변수들로 넘겨줄 정보가 없을 경우 생략 가능
      • Parameter 전달 시 묵시적 형변환 적용
    4. Variable arguments - Method에 들어오는 Parameter가 가변적일 경우
      • 배열 타입을 선언할 수 있으나 Method 호출 전 배열을 생성및 초기화 해야하는 번거로움 존재
      • ... 을 사용하여 파라미터를 선언하면 호출 시 넘겨준 값의 개수에 따라 자동으로 배열 생성및 초기화
      	VariabelTest vt = new VariableTest();
        vt.variableArgs(1, 2, 3);
        vt.variableArgs(1, 2, 3, 4, 5);
        vt.variableArgs(1, 2);
        
        public void variableArgs(int... params){
        	int sum = 0;
            for(int i : params){
            	sum+=i;
            }
            System.out.println(sum);
        }
    • 구현부

    1. 구현부는 중괄호{} 내에서 처리해야 하는 내용, 즉 로직 작성
    2. 마지막에는 선언된 리턴 타입에 해당하는 값을 return 문장과 함께 반환
      • 값 반환 시에는 묵시적 형변환 적용
      • 리턴 타입이 void인 경우 return 생략 가능
      • 메소드 수행 도중 return 문장을 만나거나 마지막 문장을 수행하는 경우 Method 종료
    • Method 호출

      Method 호출 시, static 변수와 instance 변수의 차이를 알고 해당 방법에 맞게 호출해야 한다.
    • 기본형 변수와 참조형 변수

      Method가 실행시 해당 변수를 복사하여 사용하므로 참조형이 아닌 변수를 수정해도 원래 있던 변수는 변화가 없다.
  • Method Overloading

    • 동일한 기능을 수행하는 Method의 확장
      • 일반적으로 Method 이름은 기능별로 의미 있게 정함
      • 동일한 기능을 여러 형태로 정의해야 할때 사용
    • Overloading 방법
      • Method 이름은 동일
      • Parameter의 개수 또는 순서, 타입이 달라야 함
      • retuen 타입은 상관없음
  • 생성자

    • 객체를 생성할 때 호출하는 Method와 비슷한 것
      • new 키워드와 함께 호출함
      • 일반 멤버 변수의 초기화나 객체 생성 시 실행돼야 하는 작업 정리
    • 작성 규칙
      • Method와 비슷하나 리턴 타입이 없고 이름은 클래스 이름과 동일
      	제한자 클래스명 (타입 변수명, 타입 변수명){
        	//멤버 변수 초기화 작업
        }
    • 기본 생성자
      • Parameter가 없고, 구현부가 비어있는 형태
      • 임의의 생성자가 없으면 컴파일러가 기본 제공함
      • 만약 다른 생성자가 있다면 기본적으로 제공되지 않음
    • Parameter가 있는 생성자
      • 생성자의 목적이 일반 멤버 변수의 초기화일 경우
    • 생성자도 Overloading 가능
  • this

    • 참조 변수로써 객체 자신을 가리킴
      • 참조변수를 통해 객체의 멤버에 접근했던 것처럼 this를 이용해 자신의 멤버에 접근 가능
    • 용도
      • 로컬 변수와 멤버 변수의 이름이 동일한 경우 멤버 변수임을 명시적으로 표현
      • 명시적으로 멤버임을 나타낼 경우
      	public class Person{
          	String name;
              int age;
              
              Person(String name, int age){
              	this.name = name;
                  this.age = age;
              }
          }
    • this는 객체에 대한 참조이므로 static 영역에서 사용은 불가능
profile
개발자 준비 중

0개의 댓글