객체지향언어 TIP (1)

    팁 작성에 앞서, 개념을 알기는 하지만 놓칠 수 있는 부분들이나 다시 한 번 복기하면 좋을만 한 것들을 정리해둔 것이기 때문에

    처음 공부하시는 분들에게는 적절하지 않을 있습니다.

     

    객체지향언어 TIP(1)

     

    *객체지향언어 장점

    1. 재사용성
    2. 관리 용이
    3. 신뢰성

     

    *거시적 관점에서 프로그래밍하는 능력이 요구된다.

     

    *클래스 : 객체를 정의해 놓은 것

    객체 : 정의된 내용대로 메모리에 생성된 것

     

    *객체 : 속성 + 기능 (속성&기능 : member)

    • 속성(property) : 변수(variable)로 표현
    • 기능(function) : 메서드(method)로 표현

     

    *인스턴스화(instantiate) : 클래스로부터 객체를 생성하는 것.

    생성된 객체를 인스턴스(instance)라고 한다.

    • 인스턴스는 참조변수를 통해서 다룰 수 있다.

     

    *한 소스파일 내에 public class는 단 하나만 존재해야하며 소스파일과 이름이 같아야 한다.(대소문자까지 일치해야 한다.) 여러 개의 클래스가 존재할 수는 있다.

    • 소스파일과 달리 클래스파일은 클래스마다 하나씩 만들어진다.

     

    *객체 또한 배열로 다루는 것이 가능하다.

     

    *선언 위치에 따른 변수 종류

    1. 클래스 변수(static) : 객체 선언 없이 “클래스명.”으로 변수 및 메서드 사용 가능
    2. 인스턴스 변수
    3. 지역 변수 : 클랙스 영역 이외의 영역(메서드, 생성자, 초기화 블럭 내부)

     

    *메서드의 매개변수 부분에서도 자동 형변환이 된다.

     

    *원래 반환값의 유무에 관계없이 모든 메서드에는 return 문이 존재해야 하지만 void의 경우 컴파일러가 자동적으로 마지막에 추가해주기 때문에 생략이 가능한 것이다.

     

    *호출스택(Call Stack)

    메서드의 작업에 필요한 메모리 공간을 제공하고 작업이 마무리되면 메모리 공간은 다시 반환된다.

     

    *메서드 호출 시, 기본형(Primitive type) 매개변수는 변수의 값을 받아서 읽기만 가능하다. 하지만 참조형(Reference type)이면 인스턴스의 주소가 복사되기 때문에 읽는 것 뿐만 아니라 변경까지 가능하다.

     

    *메서드의 반환타입으로 당연히 참조형도 가능하다.

     

    *멤버 변수 : 클래스 변수(static 변수) + 인스턴스 변수(객체 생성 필요)

     

    *인스턴스 메서드 : 객체를 생성하여 인스턴스 변수로 작업 수행 가능

    클래스 메서드 : 매개변수만으로 작업 수행 가능

     

    *클래스의 멤버 중 모든 인스턴스에 공통적으로 적용되는 값을 가져야 하는 것이 있는 경우 static을 붙여준다.

     

    *static 메서드는 인스턴스 변수를 사용할 수 없고 인스턴스 메서드를 호출할 수 없다.

     

    *Overloading

    한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것. 단, 매개변수의 개수 또는 타입이 달라야하며 순서만 달라도 다른 것으로 취급한다. 반환 타입은 상관 없다.

     

    *Constructor(생성자)

    → 인스턴스가 생성될 때 호출되는 ‘인스턴스 초기화 메서드’

    • Void 메서드와 같이 리턴 값이 없는 것은 비슷하지만 void를 따로 적어주지 않고 이름이 클래스의 이름과 같아야 한다.
    • 여러 개의 생성자 존재 가능
    • 생성자 정의가 없을 시 기본 생성자가 자동 생성
    • 기본생성자란 매개변수도 없고 내용도 없는 생성자이다.
    • 만약 기본 생성자 외에 다른 생성자를 추가했다면 상속 관계에 있거나 인스턴스를 생성해서 사용할 때 에러가 발생할 경우가 많으니 습관적으로 기본 생성자를 추가해주는 것이 좋다.

     

    *this() : 생성자이다. 다른 생성자 호출할 때 사용

    • 클래스 이름 대신 this 키워드 사용
    • 반드시 첫 줄에서만 호출 가능

     

    *this : 객체 자신을 가리키는 참조변수

     

    *멤버변수 초기화

    1) 명시적 초기화 : 선언과 동시에 초기화

    2) 초기화 블럭

    • 클래스 초기화 블럭 : static{ }

         → 처음 로딩될 때 한 번 실행

    • 인스턴스 초기화 블럭 : 그냥 { }

         → 인스턴스가 생성될 때 마다 실행

     

    *초기화 블럭은 명시적 초기화만으로는 처리하기 힘든 복잡한 구문의 경우에 유용하다.

     

    *인스턴스마다 개별적인 값을 가져야 하는 변수는 인스턴스 변수, 모든 인스턴스가 공통적인 값을 가져야하는 변수는 클래스 변수(static 변수)로 선언해야한다.

     

    *생성자는 객체를 초기화하는 역할이고 객체를 생성하는 것은 ‘new’ 연산자이다.

     

    *this 참조변수는 인스턴스 메서드에서만 사용 가능하고 클래스 멤버에는 사용할 수 없다.

     

    *오버로딩에서 리턴 타입은 영향력이 없다. 이름이 같고 매개변수의 개수 또는 타입이 다르면 된다.

     

    *초기화 순서

    • 클래스 변수 : 기본값 → 명시적 초기화 → 클래스 초기화 블럭
    • 인스턴스 변수 : 기본값명시적 초기화인스턴스 초기화 블럭생성자

     

    반응형

    'Java > Grammar' 카테고리의 다른 글

    예외처리 TIP  (0) 2022.12.16
    객체지향언어 TIP (2)  (1) 2022.11.30
    배열 TIP  (0) 2022.11.04
    조건문 & 반복문 TIP  (0) 2022.10.24
    연산자 TIP  (0) 2022.10.24

    댓글