[JAVA]객체지향

army246·2022년 4월 13일
0

JAVA

목록 보기
3/10

📌 객체(object)텍스트란?

물리적, 추상적으로 존재하고 생각할 수 있는 자신의 속성을 가지고 있으면서 식별 가능한 것을 의미한다.

객체는 속성과 동작으로 구성된다.
이 속성과 동작을 각각 멤버 변수, 메소드라고 한다.

속성이름, 나이, 주소, 색상, 모델명, 속도...
동작웃다, 걷는다, 먹는다, 달린다, 멈춘다...

📌 클래스(class)

자바에서 클래스는 설계도이다. 클래스에는 객체를 생성하기 위한 멤버변수와 메소드가 정의되어 있다.
클래스로부터 만들어진 메모리상의 객체를 해당 클래스의 인스턴스(instance)라고 한다.

클래스의 구조는

class 클래스이름 {
	// 멤버 변수
     
    // 생성자
    
    // 메소드
    
}

객체를 생성하려면 new 연산자를 사용하면 된다.
new는 클래스로부터 객체를 생성시키는 연산자이다.
new 뒤에는 생성자가 오는데 생성자는 클래스() 형태를 가지고 있다.
new 연산자로 생성된 객체는 힙 메모리 영역에 생성된다.

클래스 변수;
변수 = new 클래스();

// 1개의 실행문으로 작성
클래스 변수 = new 클래스();

📌 클래스의 구성 멤버

❗️ 멤버 변수

객체의 데이터가 저장되는 곳이다.
클래스에서 객체가 생성될 때 유일하게 객체에 포함되는 요소이다.

데이터타입 멤버변수 [=초기값];
String name;

❗️ 생성자(constructor)

new 연산자로 호출되는 특별한 중괄호{} 블록. 객체 생성 시 '초기화' 담당하는 곳이다.
멤버 변수를 초기화 하거나 메소드를 호출해서 객체를 사용할 준비를 한다.
클래스 이름으로 되어 있고 리턴타입이 없다.
클래스로부터 객체를 생성할 때 생성자가 호출된다.

모든 클래스는 생성자가 반드시 존재하고 생성자를 하나 이상 가질 수 있다.

기본 생성자(default constructor) 는 클래스에 생성자가 하나도 없을 때 기본으로 생성된다.
기본생성자는 멤버 변수를 기본 값으로 초기화 한다. 왜냐하면 매개변수를 가질 수 없기 때문이다.

클래스() {
}

생성자 선언

클래스( 매개변수, ...) {

}

❗️ 메소드(method)

객체의 동작에 해당하는 실행 블록이다.
객체가 제공하는 기능이 메소드이다.
메소드 선언부를 메소드 시그니처라고 한다.

리턴타입 메소드이름 (매개변수선언, ...) {
	// 실행할 코드 (메소드 기능)
    return 메소드 실행결과;
}

- 리턴타입
메소드가 리턴값의 데이터 타입. 리턴값은 메소드를 실행할 후의 결과값이다.
리턴값이 있는 경우는 리터 타입이 선언부에 명시되어야 하고,
리턴값이 없는 경우 (아무것도 리턴하지 않는 경우)에는 리턴 타입에 void 를 선언한다.

- 메소드 이름
메소드 이름은 어떤 기능을 수행하는지 알 수 있도록 기능 이름으로 지어주는 것이 좋다.
너무 축약한다면 기능을 유추할 수 없다.

- 매개 변수
매개변수는 메소드가 실행할 대 필요한 데이터를 외부로부터 받기 위해서 사용한다.
매개변수가 선언된 메소드 안에서만 사용할 수 있는 로컬변수이다.
메소드 호출하기 위해서는 매개변수의 개수,타입에 맞는 인자를 전달해야 한다.
메소드 안에서 매개 변수가 필요한 경우가 있고, 필요 없는 경우가 있다.

❗️ return 문
메소드 선언에 리턴 타입이 있는 메소드는 반드시 return문을 사용해서 리턴값을 지정해야 한다.
return문이 없다면 커파일 에러가 발생하고, return문이 실행되면 메소드는 즉시 종료된다.

return 리턴값;

리턴값이 없는 메소드는 void를 사용한다.
void로 선언된 메소드에서도 return문을 사용할 수 있다. 리턴값을 지정하는 것이 아니라 메소드 실행을 강제 종료시키는 역할을 한다.

return;

📌 오버로딩(overloading)

한 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것을 메소드 오버로딩이라고 한다.
오버로딩의 조건은 메소드 이름은 같고, 매개 변수의 타입,개수, 순서 중 하나가 달라야한다.

class 클래스 {

	리턴타입 메소드이름 (타입변수, ...) {
    }
    
    // 리턴타입은 상관없고, 메소드이름은 동일, 매개 변수의 타입, 개수, 순서가 달라야 한다.
    
    리턴타입 메소드이름 (타입변수, ...) {
    }
    
}

메소드 오버로딩이 필요한 이유는 매개값을 다양하게 받아서 처리할 수 있도록 하기 위해서이다.

참고
혼자공부하는자바

profile
천천히 꾸준히

0개의 댓글