DAY05 - 메서드, 객체, 클래스, this, 생성자

은나현·2023년 1월 27일
0

📌 1. 메서드

📍 1-1. 메서드란?

  • 프로그램의 함수 = 메서드
  • 특정 기능(=연산)을 그룹화해서 재사용하기 위한 단위
    	public static void 메서드이름() {
    		...
    	}

📍 1-2. 메서드의 호출

  • 정의된 메서드는 다른 메서드를 구성하는 {...} 안에서 다음의 형식으로 사용될 수 있으며, 이를 메서드를 호출한다라고 한다.

    메서드이름();

📍 1-3. 메서드 파라미터(매개변수)

  • 메서드는 자신이 실행되는 데 필요한 조건값을 메서드 이름 뒤의 괄호() 안에서 변수 형태로 선언한다. 이를 메서드 파라미터라고 한다.
  • 메서드가 연산을 수행하는 데 두 개 이상의 파라미터가 필요하다면 콤마,로 구분하여 선언할 수 있다.
    	public static void 메서드이름( 변수형 변수이름, ... ) { 	
    		...
    	}
        // 매개변수는 콤마(,)로 구분해서 필요한 만큼 받을 수 있음

📍 1-4. 파라미터를 갖는 메서드의 호출

  • 메서드이름( 값 1, 값 2 ... );
    값의 자료형과 개수는 메서드에서 요구하는 파라미터와 일치해야 함

📍 1-5. 값을 반환하는 메서드

  • 함수의 결과값

    • 함수는 자신이 포함하고 있는 수식에 대한 결과를 반환한다.
    	f(x) = x + 1
    	f(3) = 3 + 1 = 4
    	y = f(3) 	// y에는 4라는 값이 대입된다.
  • 메서드의 리턴값

    • 메서드가 연산 결과를 자신이 호출된 위치에 반환하는 것을 리턴이라고 하며, 반환되는 값을 리턴값이라고 한다.
    • 메서드 안에서 값을 리턴하기 위해서는 return이라는 키워드를 사용한다.
    • 값을 리턴하는 메서드는 선언시에 리턴하는 값에 대한 변수형이 명시된다. void는 리턴값이 없다는 의미다.
    	public static 리턴형 메서드이름 (변수형 파라미터 1, ... ) {
    		...
    		return 리턴값;
    	}

📍 1-6. 메서드간의 상호 호출

  • 메서드 역시 서로 호출하는 것이 가능하다. 호출된 메서드가 값을 리턴하는 경우, 리턴받은 값을 다른 연산에 사용할 수 있다.

📌 2. 객체 (=object)

📍 2-1. 프로그래밍에서의 객체

  • 프로그램에서 표현하고자 하는 기능을 묶기 위한 단위

📍 2-2. 객체를 구성하는 단위

  • 객체를 이루는 것은 데이터기능이다.
  • 데이터는 변수로 표현한다.

    객체 안에 포함된 변수는 멤버 변수, 전역 변수, 프로퍼티, 필드

  • 기능은 메서드로 표현된다.

📍 2-3. 클래스(Class)

  • 객체를 생성하기 위해서는 객체의 설계도가 필요하다 .
  • 객체의 설계도 역할을 하는 프로그램 소스 -> 클래스(Class)
    • 공장에서 하나의 설계도를 가지고 여러 개의 제품을 생산할 수 있는 것처럼 하나의 클래스를 통해 동일한 구조를 갖는 객체를 여러 개 생성할 수 있다.
    • 클래스의 기본 작성 방법
    	class 클래스이름 {
    		멤버변수;
    		void 메서드이름(){
    			...
    		}	
    	}
  • class라는 예약어와 클래스의 이름을 명시하고 {...}블록을 구성
  • 멤버변수는 여러 개 존재할 수 있다. 이 때, 값을 선언과 동시에 할당할 수도 있고, 객체를 통해 간접적으로 할당할 수도 있다.
  • 메서드도 여러 개 존재할 수 있다.
  • 클래스 안에 포함된 멤버변수와 메서드를 특성에 따라 그룹화하기 위한 기법이 클래스를 작성하는 것이라고 이해할 수 있다.

📍 2-4. 객체의 생성과 사용

🖇️ 2-4-1. 객체의 생성

  • 객체의 선언
    클래스이름 객체이름;
  • 객체의 할당
    객체이름 = new 클래스이름();
  • 선언과 할당의 통합
    클래스이름 객체이름 = new 클래스이름();

🖇️ 2-4-2. 객체의 사용

  • 객체 안에 포함된 변수나 메서드를 점.으로 연결하여 접근한다.
  • 객체이름.멤버변수;
  • 객체이름.메서드();
    • std. name = "홍길동";

📍 2-5. 클래스의 다양한 사용

🖇️ 2-5-1. 값이 대입되지 않은 멤버변수를 갖는 클래스

  • 클래스란 객체를 위한 틀을 제공하는 것이기 때문에 클래스 작성과정에서 멤버변수에 대입된 값은 객체를 통하여 멤버변수의 값을 지정하기
    전까지 사용될 기본값으로서의 의미이다.
  • 객체를 통하여 새로운 값이 대입되면 클래스 작성시에 멤버변수에 대입한 값은 의미를 잃어버리게 된다.
  • 때문에 일반적으로 클래스 작성시에는 멤버변수에 값을 지정하지 않는다.

🖇️ 2-5-2. 메서드를 포함하는 클래스

  • 메서드란 프로그램에서 하나의 동작 단위를 의미한다.

    • 두 개 이상의 메서드가 서로 동일한 대상을 위해서 존재할 경우, 이 메서드들을 클래스에 포함시켜 그룹화할 수 있다.
  • 변수의 종류

    • 클래스에 멤버변수와 메서드가 공존할 경우, 멤버변수는 모든 메서드가 공유하는 전역 변수로 존재하게 된다.
      • 멤버변수(=전역변수)
        : 클래스 안에서 선언된 변수로써, 클래스 블록 범위 안에서 유효하다.
      • 지역변수
        : 메소드 안에서 선언된 변수로써, 메서드의 블록을 빠져나가지 못한다. 그러므로 다른 메서드는 해당 변수를 인식하지 못한다.
        이 규칙은 조건문, 반복문 같은 블록{}을 형성하는 모든 경우에 해당된다.

🖇️ 2-5-3. 메서드만을 포함하는 클래스

  • 객체 안에 멤버변수(=데이터)가 포함되지 않는다.
  • 객체 안에 포함된 메서드를 호출하여 결과를 만들기 위한 목적이므로 굳이 여러 개의 객체를 생성할 필요가 없다.

📌 3. this

📍 3-1. this란

  • 자기 자신을 의미하는 키워드
  • 클래스 안에서 this를 사용하여 "자기 자신"을 표현한다.

📍 3-2. this를 사용한 구분

🖇️ 3-2-1. this를 사용하여 지역변수와 멤버변수 구분하기

  • 멤버변수와 지역변수가 동일한 이름으로 공존할 때 유효성의 범위가 작은 변수가 우선적으로 인식된다.
	class User { 
		String name;			// 멤버변수
		public void setName(){
			String name;		// 지역변수
			name = "자바사용자";
			this.name = "멤버자바";
		}
	}

🖇️ 3-2-2. this를 사용하여 파라미터와 멤버변수 구분하기

  • 파라미터도 해당 메서드 안에서만 유효한 지역변수의 일종이다.
  • 파라미터를 사용하여 멤버변수의 값을 간접적으로 설정하고자 할 경우 변수의 이름을 서로 다르게 사용하는 것보다는 이름은 동일하게 지정하고 this키워드를 사용하여 멤버변수와 파라미터를 구별하는 것이 java언어의 일반적인 처리 방식이다.
  • 모든 멤버변수 앞에는 this키워드를 사용하여 멤버변수임을 직관적으로 표시하는 것이 소스코드의 가독성을 위하여 바람직하다.
	class User {
		String name;
		public void setname(String name){
			this.name = name; 
		}
	}

🖇️ 3-2-3. this 키워드를 활용한 멤버변수와 메서드의 접근

  • 멤버변수는 지역변수와 구별하기 위하여 가급적 this를 통하여 접근
  • 메서드에 접근할 때 this 키워드를 사용하는 것이 필수적인 것은 아니다.

📌 4. 클래스, 메서드, 상수의 이름 규칙

📍 4-1. 공통 이름 규칙

  • 영어 + 숫자 + 언더바(_)의 조합이고, 첫글자는 반드시 영어로 표기

📍 4-2. 클래스 이름 규칙

  • 첫 글자는 대문자로 시작, 나머지 글자는 소문자로 표시한다
  • 두 개 이상의 단어를 조합해야 할 경우 새로운 단어는 대문자로 시작한다.

    class Member
    class MyClass
    class NetworkHelper

📍 4-3. 메서드, 변수 이름 규칙

  • 대부분 소문자로 구성되지만, 두 개 이상의 단어를 조합할 경우 새로운 단어는 대문자로 표시한다.

    int age
    String userName
    String member_count

📍 4-4. 상수

  • 모두 대문자로 표시한다.

    final double PI;
    final int COLOR;

📌 5. 생성자

📍 5-1. 생성자란

  • new 키워드를 사용하여 객체가 생성될 때 자동으로 실행되는 특수한 형태의 메서드
    • 리턴형을 명시하지 않으며, 메서드의 이름은 클래스와 동일하다.
    • 자동으로 실행된다는 특성 때문에, 객체가 생성되면서 해당 객체의 특성을 초기화하기 위하여 사용된다.
    • 멤버변수의 초기값을 할당하는 용도

📍 5-2. 기본생성자

  • 파라미터가 없는 생성자
    • 클래스에 특별히 생성자가 정의되지 않은 경우 Java 컴파일러는 다음과 같은 기본 생성자가 존재한다고 인식한다.
    	class User {
    		User(){
    			...
    		}

📍 5-3. 파라미터를 갖는 생성자

  • 생성자도 메서드의 한 종류이므로 파라미터를 함께 정의하는 것이 가능하다.
  • 생성자의 파라미터를 멤버변수에 복사하는 것으로 객체의 초기화를 외부적인 요인에 의해서 처리할 수 있다.

0개의 댓글