본문 바로가기
Java

Java_클래스와 메소드, 오버로딩(oop)

by 유서담 2023. 11. 1.

클래스

 

  • 클래스는 객체를 생성하기 위한 설계도다.
  • 하나의 클래스로 여러 개의 객체를 생성할 수 있다.
  • 클래스의 구성요소는 필드, 생성자, 메소드다.

 

클래스의 구성요소

 

 

필드(Field)

  • 객체의 고유 데이터, 현재 상태정보, 부품객체를 저장하는 곳이다.
  • 객체의 고유한 속성을 나타낸다.
  • 변수와 비슷한 형태로 정의한다.
  • 필드는 초기화값을 지정하지 않는 경우 해당 데이터 타입의 기본값으로 초기화된다.
  • 필드는 생성자와 메소드 전체에서 사용가능하다.
  • 객체 소멸되지 않는 한 객체와 함께 유지된다.
Ex) 필드의 예시
public class Car{

    String name;
    String color;
    int maxSpeed;
    int currentSpeed;
}

필드 ( 멤버변수 ) 예시

 

 

생성자(Constructor)

  • new 연산자로 호출되는 특별한 메소드다.
  • 객체 생성시 초기화를 담당한다.
  • 반드시 클래스의 이름과 동일한 이름을 가지고, 반환타입이 없다.
  • 객체 생성할 때만 호출할 수 있다.

 

메소드(Method)

  • 이름을 가진 수행문의 블록
  • 객체의 고유한 기능을 담당한다.
  • 메소드의 구성은 선언부구현부로 구성되어 있다
  • 메소드의 선언부는 접근제어자 반환타입 메소드이름(매개변수타입 매개변수명, 매개변수타입 매개변수명, ...)으로 구성된다.
  • 메소드의 구현부는 해당 메소드가 수행하는 작업에 대한 수행문이 포함되어 있다.

메소드의 구성

 

  • 메소드 선언부
    • 반환타입(return Type)
      • 메소드 수행결과(출력)인 반환값에 대한 데이터 타입을 적는다
      • 반환값이 없는 경우 반환타입은 void를 적는다
      • 메소드는 오직 한 종류의 값만 반환할 수 있다
      • 메소드의 반환타입이 void가 아닌 경우, 구현부안에는 return 반환값 구문이 반드시 포함되어 있어야 한다.
      • return문은 구현부(구현부 내의 수행문을 실행한) 실행한 결과로 획득된 값을 호출한 측에게 반환값으로 전달하는 수행문이다.
      • retrun문이 반환하는 반환값의 타입은 메소드 선언부의 반환타입과 일치해야한다.

 

// 반환타입이 void일 경우, return문이 필요없음
void 연습1() {
	수행문;
	수행문;
 }
 
// 반환타입이 int일 경우, return 구문이 반드시 필요함
// 컴파일 에러 발생 - return 구문이 없음
  int 연습2() {
    수행문;
    수행문;
}

// 반환타입이 int일 경우, return 구문이 반드시 필요함.
// 정수값을 반환하는 return 구문이 있음
int 연습2() {
	수행문;
	수행문;
	return 정수값;
}

 

 

반환타입이 기본자료형인 경우
 - 메소드를 호출한 측에 값이 제공된다.
 
반환타입이 참조자료형인 경우
 - 참조자료형은 배열을 포함한 모든 객체가 반환값으로 반환된다.
 - 참조자료형의 반환값은 객체의 주소값이다.

 

 

 

  •   메소드 이름
    • 수행문을 포함하고 있는 코드블록의 이름이다.
    • 그 메소드가 수행하는 작업을 잘 나타내는 이름으로 적는다
    • 메소드명은 보통 동사형이다. 
  • 매개변수 (Paramater)
    • 매개변수는 메소드가 작업을 수행하는데 필요한 값들(입력값)을 제공받기 위한 변수다
    • 매개변수는 필요한 값의 개수만큼 변수를 선언해야 하며, 각 변수들은 ,로 구분된다
    • 매개변수의 타입이 같아도 변수의  타입을 생략할 수 없다
  int add(int x, int y) { ... } // OK
  int add(int x, y) { ... } // 에러, 매개변수 y의 타입이 정의되지 않았음
참조형 타입의 매개변수
- 매개변수에는 지정된 타입의 객체나 배열을 참조할 수 있는 주소값을 입력으로 요구한다.
- 매개변수에 지정된 타입의 객체에 대한 주소값 대신 null값이 입력값으로 전달되어도 상관없다.
- 단) 매개변수에 null이 전달될 수도 있는 경우에는 매개변수에 저장된 값이 null인지, 실제 주소값인지를 꼭 확인해야 한다.

 

  • 메소드 구현부
    • 메소드를 호출했을 때 수행할 수행문을 포함하는 부분이다.
    • 수행문이 하나도 없는 구현부도 가능하다.
    • 메소드 선언부의 반환타입이 void가 아닌 경우 구현부 안에는 반드시 return 키워드를 사용해서 값을 반환하는 수행문이 존재해야 한다.

 

메소드의 예시 및 메소드의 실행

 


 

클래스를 정의하고 다른 클래스에서 객체생성시 사용하는 예제

클래스를 정의한 모습

 

 

 

다른 클래스에서 객체를 생성해서 사용하고 메소드를 사용해서 출력한 모습이다.

 


 

오버로딩 

  • 오버로딩은 하나의 클래스 안에 같은 이름의 메소드를 여러 개 정의하는 것

 

오버로딩의 목적

  • 유사한 기능은 동일한 이름으로 일관되게 정의하기 위해서
  • 같은 이름을 사용함으로서 객체의 기능에 대한 사용성이 높아진다

 

오버로딩의 조건

  • 매개변수의 개수가 달라야 한다.
  • 매개변수의 타입이 달라야 한다.
  • 매개변수의 이름이 다른건 오버로딩의 조건에 해당하지 않는다

 

오버로딩의 예시

 

 

오버로딩한 메소드를 사용한 코드 및 출력결과

 

 

 

자바의 주석

더보기

단일행 주석 : 해당 행을 주석처리한다

// 주석내용을 달면된다

// 주석내용

 

다중행 주석 : 범위내의 모든 행을 주석처리한다.

/*

    주석내용

    주석내용

*/

/*
주석내용
1234
*/

 

자바문서 주석 : 자바 API 문서 작성에 사용되는 주석

/**

    자바 API 문서 내용

*/

/**
	자바 API 문서 내용
*/
클래스에 마우스를 올려놓으면 주석에 대한 내용이 나온다

 

'Java' 카테고리의 다른 글

Java_static변수와 static메소드 (oop)  (0) 2023.11.08
Java_생성자, 메소드 예시(oop)  (0) 2023.11.02
Java_객체지향프로그래밍 (oop)  (0) 2023.11.01
Java_배열 [ Array ]  (0) 2023.10.27
Java_반복문(for문, while문)  (0) 2023.10.27