1. 클래스
(1) 클래스
- 사용자 정의 타입이다(자료형)
- 연관성 있는 저장공간과 기능을 한 곳에 모아 편하게 관리할 수 있는 것
- 객체를 생성하기 위한 틀, 설계도면
공통되는 속성(변수)과 행위(메소드)를 한 번만 선언해놓고 가져다 사용만 할도록 설계한다
추상적인 것(클래스)을 구체화 시키면(메모리에 생성된 것) 객체라고 한다
클래스는 추상적이다
객체는 구체적이다
=> 하나의 추상적인 클래스를 만들면 여러개의 구체적인 객체를 만들 수 있다
(2) 객체(Object)와 인스턴스(Instance)
객체 : 실제 사물 또는 개념
클래스 : 객체를 컴퓨터에 옮기기 위해 추상화 한 것, 실제 존재하는 공간이 아니며 추상적이다
인스턴스 : 클래스를 메모리에 할당시킨 것이며 물리적으로 존재하는 공간, 구체적이다
객체와 인스터는 동일하다고 생각하고 사용해도 문제가 없다
한국에서는 클래스와의 관계를 말할 때 인스턴스라고 부른다
(3) 클래스 선언
class 클래스명{
//class를 구성하는 모든 변수, 메소드를 합쳐서 멤버라고 부른다
변수; //멤버 변수, 필드
메소드(){} //멤버 메소드
}
(4) 객체화작업(인스턴스화) : instantiation
객체를 만드는 작업, 추상적인 개념을 구체화 시키는 작업
클래스명 객체명 = new 클래스명();
클래스명 참조변수명 = new 생성자();
객체 사용방법
변수명.필드명
변수명.메소드명();
public void myMethod(){
MyClass refVar = new MyClass();
자료형(클래스명) 참조변수 대입연산자 new 생성자();
-------------------------------- -------------------
1번 3번 2번
}
1) refVar라는 참조변수는 myMethod()라는 메소드 영역에서 만들어진 지역변수이므로 JVM이 관리하는 메모리의
Stack영역에 생성된다
데이터타입(클래스)은 참조하려는 대상과 같은 자료형이어야하므로 MyClass라고 지정한다
2) new 연산자 Heap메모리 MyClass 객체를 생성하고 참조값을 가져온다(참조값 반환)
이 때 생성자가 실행된다
3) 대입연산자를 통해 오른쪽에 참조값을 왼쪽의 참조변수에 저장한다
2.생성자
클래스 이름뒤에 소괄호가 있는 형태
메소드와 비슷하지만 메소드라고 부르지 않는다
생성자는 리턴이라는 기능이 존재하지 않는다
- 객체를 생성할 때 실행되는 코드가 작성되어있다
- 주로 해당 클래스의 필드를 초기화하는 목적으로 사용한다
(1) 기본생성자
public 클래스명(){}
매개변수가 없다
클래스 선언 시 자동으로 선언되며, 사용자가 직접 생성자를 선언하게 되면 자동으로 만들어주지 않는다
(2) this
객체 자기 자신을 의미한다 -> 객체 자신의 주소값을 담고있다
this는 자동 생성되는 변수이다
'Java > Java 기초' 카테고리의 다른 글
상속 세부개념 및 접근 제한자 (0) | 2023.12.19 |
---|---|
this, static, 상속 개념 (0) | 2023.12.18 |
오버로딩과 클래스 (0) | 2023.12.14 |
배열과 메소드 (0) | 2023.12.13 |
이중 for문과 배열 (0) | 2023.12.12 |