ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 스터디 1회차 - 클래스
    카테고리 없음 2024. 4. 3. 20:00

     

    ▶클래스

    • 인스턴스 - 클래스로부터 만들어진 객체
    • 인스턴스화 - 클래스로부터 객체를 만드는 과정

    클래스의 정의

    1. 객체를 생성하기 위한 틀, 속성과 기능으로 정의됨(객체)
    2. 변수를 정의하고, 작업을 수행하는 함수들을 정의한 것
    3. 구조체 + 함수의 결합

    클래스의 용도

    • 객체를 생성하는 데 사용

     

    객체 배열

    • 참조변수들을 하나로 묶은 참조변수 배열 / 객체 생성 후 배열의 각 요소를 꼭 저장하기

     

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

     

    멤버 변수 - 클래스 변수, 인스턴스 변수
    멤버변수를 제외한 나머지 변수들은 모두 지역 변수

    변수 종류 선언 위치 생성 시기 저장 메모리
    클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 메소드
    인스턴스 변수 클래스 영역 인스턴스가 메모리에 올라갈 때
    지역 변수 클래스 영역 이외 영역 변수 선언문이 실행되었을 때 스택

     

    1. 클래스 변수 - 모든 인스턴스가 공통된 저장공간 (변수)를 공유, 인스턴스를 생성하지 않고 바로 사용 가능 '클래스 이름.클래스 변수' 형식으로 사용
    2. 인스턴스 변수 - 인스턴스(객체)마다 별도의 저장 공간을 가지므로 서로 다른 값 가능
    3. 지역 변수 - 메서드 내에 선언되어, 메서드 내에서만 사용 가능

    ------------> 클래스는 공통된 값, 인스턴스는 각각 고유의 값. /// 클래스에 퍼블릭 -> 전역 변수

     

    메서드

    • 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것
    • 어떠한 값을 입력하면 그 값으로 작업을 수행해서 결과를 반환함
    • 선언부와 구현부로 이루어짐
    반환타입 메서드이름 (타입 변수명, 타입 변수명..)			---> 선언부
    {
    							
                        // 메서드 호출시 수행될 코드
    }								---> 구현부

     

    메서드의 선언부 - 메서드 이름, 매개변수 선언, 반환 타입으로 구성

    *주의 - 메서드의 선언부는 후에 변경 사항이 발생하지 않도록 신중하게. 호출되는 모든 곳이 함께 변경되어야 하기 때문

    • 매개변수 선언 - 메서드가 작업을 수행하는데 필요한 값들을 제공받기 위한 것. 입력받을 필요가 없다면 () 안에 아무것도 적지 않아도 됨
    • 반환 타입 - 출력값은 return, 반환값이 없는 경우 void를 적어야 함

    메서드의 구현부

    • 반환 타입이 'void'가 아닌 경우 구현부 { } 안에 'return 반환값;'이 반드시 있어야 함
    • 타입은 반환 타입과 일치하거나 적어도 형변환이 가능한 것
    • 현재 실행 중인 메서드를 종료하고, 호출한 메서드로 되돌아감 -> void일 경우 강제 종료
    • 반환값이 있는 경우 반드시 return문이 있어야 함

    *반환값은 그냥 수식을 계산한 결과가 반환된 값

    메서드 호출

    인수와 매개변수

    • 메서드를 호출할 때 괄호 ( ) 안에 지정해 준 값을 '인수' 또는 '인자'라 함
    • 인자의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 함
    • 인자의 타입은 매개변수의 타입과 일치하거나 자동 형변환이 가능해야 함

    *메서드 간의 호출과 참조

    • 같은 클래스의 멤버들은 인스턴스를 따로 생성하지 않아도 참조 or 호출 가능
    • 클래스 멤버 인스턴스 멤버를 참조 or 호출하려면 인스턴스를 생성해야 함

    -------> 인스턴스 멤버가 존재하는 시점에 클래스 멤버는 항상 존재하지만, 클래스 멤버가 존재하는 시점에 인스턴스 멤버가 존재하지 않을 수도 있기 때문!

     

    호출스택

    • 메서드의 작업에 필요한 메모리 공간 제공
    • 지역변수(매개변수 포함)들과 연산의 중간 결과 등을 저장

     

    매개 변수

    • 기본형 매개변수 - 변수의 값을 읽기만 할 수 있음 (read only)
    • 참조형 매개변수 - 변수의 값을 읽고 변경할 수 있음 (read & write)

    기본형은 복사해 오는 거, 참조형은 불러오는 거?

     

    스태틱 메서드와 인스턴스 메서드

    • 클래스 메서드 - 객체를 생성하지 않고도 호출 가능
    • 인스턴스 메서드 - 반드시 객체를 생성해야지만 호출 가능

    *앞이랑 똑같다 스태틱 있으면 클래스 메서드, 없으면 인스턴스 메서드

     

    오버로딩

    • 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것

    조건

    1. 메서드 이름이 같아야 함
    2. 매개변수의 개수 또는 타입이 달라야 함
    3. 반환 타입은 관계없음

     

    생성자

    • 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'
    • 연산자 new가 인스턴스를 생성하는 것. 생성자가 인스턴스를 생성하는 것은 아님
    int x = 0;			-> 초기화
    Test t = new Test();		-> Test(); 생성자(인스턴스 초기화 메서드)

     

    *기본 생성자 - 컴파일러가 기본 생성자 제공, 이 경우는 클래스에 정의된 생성자가 하나도 없을 때뿐

     

    *매개 변수가 있는 생성자 - 인스턴스를 생성하는 동시에 원하는 값으로 초기화 가능

     

     

    this(), this*(매개변수)

    • 생성자
    • 같은 클래스의 다른 생성자를 호출할 때
    • 생성자의 이름으로 클래스 이름대신 this 사용
    • 첫 줄에서만 호출 가능

     

    this

    • 객체 자신을 가리키는 참조변수
    • 인스턴스의 주소가 저장
    • 모든 인스턴스 메서드에 지역변수를 숨겨진 채로 존재

    ** this = 참조변수 / this() = 생성자

     

    변수의 초기화

    • 지역변수는 사용하기 전에 반드시 초기화

     

    멤버변수의 초기화

    1. 클래스 변수(cv) 초기화 -> 인스턴스 변수(iv) 초기화
    2. 자동 초기화 -> 명시적 초기화(간단) -> 초기화 블럭, 생성자(복잡)

    명시적 초기화 - 변수 선언과 동시에 초기화하는 것, 초기화 블럭 또는 생성자 사용

     

    초기화 블럭  - 스태틱 차이

    • 클래스 초기화 블럭 - 클래스 변수의 복잡한 초기화에 사용, 처음 메모리에 로딩될 때 한번만 수행
    • 인스턴스 초기화 블럭 - 인스턴스 변수의 복잡한 초기화에 사용, 인스턴스가 생성될 때마다 수행

    + 멤버 변수(클래스 변수, 인스턴스 변수)와 배열의 초기화는 선택

     

     

     

    ** 변수 = 하나의 값을 저장할 수 있는 공간

    ** 기본형 변수 = 실제 값 저장

    ** 참조형 변수 = 기본 타입 제외, 객체의 주소가 저장됨. 8개의 기본형을 제외한 나머지 타입

    (배열 열거 클래스 인터페이스.. 등등)

    ** 상수 = 선언과 동시에 초기화 해야하며, 한번 값을 저장하면 다른 값으로 변경할 수 없음.

                   선언 방법은 변수 타입 앞에 final 붙이기

    **매개 변수 = 메소드나 생성자 등의 함수에 전달되는 값을 저장하기 위해 사용되는 변수, 함수의 정의에서 선언
    함수의 매개변수는 함수 호출 시에 인수(argument)로 전달


     

    자바 기초 지식도 없는 내가 객체지향부터 스터디를 시작했다
    준비한 내용 말고 다른 내용을 질문받으니 하나도 모르겠더라

    블로그도 이쁘게 정리하고 싶어!

Designed by Tistory.