개발자의 공부노트

Java 05 - 객체지향개념 1

2021. 6. 22. 22:17프로그래밍 언어/JAVA

객체지향의 중요한 개념1

 

 

객체지향언어의 특징


  • 코드 간의 관계를 맺어줌으로써 적은 노력으로 코드 변경이 가능하다.
  • 코드의 재사용성이 높아진다.
  • 제어자와 메서드를 이용하여 데이터를 보호한다.
  • 코드의 중복을 제거하여 오류를 방지한다.

 

 

클래스와 객체


  • 클래스란 객체를 정의해 놓은 것이다. (ex 제품 설계도)
  • 클래스는 객체를 생성하는데 사용한다.
  • 객체란 실재로 존재하는 사물 또는 개념 (ex 제품)
  • 객체는 속성과 기능에 따라 용도가 다르다.
  • 객체는 인스턴스를 포함하는 일반적 의미이다.
  • 객체는 속성과 기능으로 이루어져 있다. (ex 속성: 길이/높이 , 기능:켜기/끄기)
  • 속성은 변수로, 기능은 메서드로 정의한다.

 

 

인스턴스(Instance)


  • 클래스로 부터 인스턴스를 생성하는 것을 '인스턴스화' 라고 한다.
  • 인스턴스 생성 -> HashMap map = new HashMap();
  • 인스턴스 사용 -> map.put("key","value");

 

 

변수


  • 클래스 변수(클래스영역): 클래스가 메모리에 올라갈 때 생성되며 같은 클래스의 모든 인스턴스 들이 공유하는 변수이다. static을 붙여서 사용한다.
  • 인스턴스 변수(클래스영역): 인스턴스가 생성시 생성되며 각 인스턴스의 개별적인 저장공간이 존재한다.
  • 지역 변수(메서드영역): 메서드 내에서 생성시 생성되며 메서드 종료와 함께 소멸된다.
  • 클래스변수와 인스턴스변수가 아니면 모두 지역변수이다.
  • 인스턴스 변수는 생성시 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장 공간을 공유하므로 항상 공통된 값을 갖는다.

 

 

메서드


  • 작업을 수행하기 위한 명령문의 집합이다.
  • 값을 입력받아 처리하고 결과를 돌려주거나 돌려주지 않을 수도 있다.
  • 반복 수행되는 문장을 메서드로 작성하여 반복되는 코드를 줄인다.
  • 하나의 메서드는 한가지 기능만 수행하도록 작성하는 것이 좋다.

 

 

JVM 메모리 구조


  • Method Area: 클래스 정보와 클래스 변수가 저장되는곳이다.
  • Call Stack: 메서드의 작업공간으로, 메서드가 호출되면 수행에 필요한 메모리를 할당받고 종료되면 메모리를 반환한다.
  • Heap: 인스턴스가 생성되는 공간으로, new 연산자에 의해서 생성되는 배열과 객체는 모두 이곳에 생성된다.

JVM 메모리 구조

 

 

매개변수


  • 기본형 매개변수: 변수의 값을 읽기만 할 수 있다.
  • 참조형 매개변수: 변수의 값을 읽고 변경할 수 있다.

 

 

재귀호출


  • 메서드 내에서 자기자신을 반복적으로 호출하는 것을 말한다.
  • 반복문으로 대체할 수 있으나, 반복문보다 성능이 떨어진다.
  • 코드가 간결하고 이해하기 쉬워진다.

 

 

오버로딩


  • 하나의 클래스에 같은 이름의 메서드를 여러 개 정의하는 것을 뜻한다.
  • 메서드의 이름은 같고, 매개변수의 개수 또는 타입이 달라야 한다.
public int overloading(int a, int b){
    return int a;
}

public int overloading(int a, int b, int c){
    return int b;
}

public int overloading(int a, int b, int c, String s){
    return int c;
}

 

 

생성자


  • 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드를 말한다.
  • 모든 클래스에 반드시 하나 이상의 생성자가 있어야 한다.
  • 생성자의 이름은 클래스 이름과 같아야 한다.
  • 리턴값이 없기 때문에 void를 쓰지 않는다.
  • 생성자를 정의하지 않으면 기본 생성자(매개변수가 없는 생성자)가 자동 정의된다.
  • this(): 같은 클래스에 다른 생성자를 호출할 때 사용한다.
  • this: 인스턴스 자신을 가리킨다. 지역변수와 구분하기 위해 사용한다.

 

 

변수의 초기화


  • 멤버변수(인스턴스변수, 클래스변수)와 배열은 각 타입의 기본값으로 자동 초기화 된다.
  • 지역변수는 사용전에 반드시 초기화를 해줘야 한다.
  • 클래스 변수는 처음 한번만 메모리에 올라가기 때문에 참조해도 초기화되지 않는다.

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

Java 07 - java.lang 패키지  (0) 2021.07.15
Java 06 - 객체지향개념 2  (0) 2021.06.28
Java 04 - 조건문과 반복문  (0) 2021.06.08
Java 03 - 연산자  (0) 2021.06.07
Java 02 - 자바 변수의 종류  (0) 2021.05.16