JAVA/공부

클래스와 객체

GaeGim 2022. 7. 2. 23:41
반응형

객체 : 사용할 수 있는 실체

클래스 : 객체를 만들기 위한 설계도

 

※ 클래스를 쓰는 이유

변수 < 배열 < 구조체 < 클래스

 

· 변수 : 다양한 형태의 데이터를 저장하게 해 가각의 데이터를 저장하는 문법 요소

· 배열 : 같은 자료형인 변수를 묶어서 관리 가능한 문법 요소

· 구조체 : 서로 다른 자료형을 묶어서 관리 가능한 문법 요소

· 클래스 : 다양한 자료형의 데이터를 묶어서 관리하기도 하지만 데이터 처리하는 다양한 기능도 함께 관리하는 문법 요소

 

클래스/인터페이스

일반메서드/추상메서드

 

 

클래스 문법)

class 클래스명{ //.. }

package ...;		//패키지
import ...;		//임포트
class A {		//외부 클래스
    int a;		//필드
    A() {...}		//생성자
    double abc() {}	//메서드
    class B {		//이너 클래스
    }
}

 

클래스 외부 요소

1. 패키지 : 첫 번째 줄에 위치.

2. 임포트 : 다른 패키지의 클래스 사용하고자 할 때 표시. 패키지 다음에 위치.

3. 외부 클래스 : 클래스 외부에 또 다른 클래스. 외부 클래스엔 public 키워드를 붙일 수 없다.

 

클래스 내부 요소

1. 필드 : 클래스 특징(속성)을 나타내는 변수.

2. 메서드 : 클래스가 지니고 있는 기능.

3. 생성자 : 클래스 객체 생성.

4. 이너 클래스 : 클래스 내부에 포함된 클래스.

 

이들 중 일부는 없어도, 심지어는 아무 것도 없어도 무관하지만

이들의 정해진 자리 중에 어떤 것이라도 더 포함되는 것이 있다면 오류가 발생될 것이다.

 

· 클래스 멤버 : 생성자를 제외한 3요소.

 

 

인스턴스화 : 클래스의 생성자로 객체를 만드는 과정

인스턴스 : 인스턴스화로 만들어진 객체

인스턴스 멤버 : 클래스 내부 구성 요소 중 생성자를 제외한 나머지 요소가 포함.

-> 클래스는 뱌로 사용이 불가하고 반드시 객체를 생성해 객체 안에 있는 필드, 메서드 및 이너 클래스를 사용해야 한다.

 

 

 

· 클래스 객체 생성

문법 ) 클래스명 참조변수명 = new 생성자();

 

메서드를 통해 객체를 생성할 때도 있지만 해당 메서드 내엔 new 키워드, 모든 클래스 객체는 new 키워드로 생성할 수 있다고 볼 수 있다.

참조 변수는 실제 데이터를 저장하는 것이 아니라 실제 데이터가 있는 힙 메모리 위치값을 가리키는 변수다.

new 키워드는 ~을 힙 메모리에 넣으라는 의미다.

생성자는 클래스와 이름은 같지만 뒤에 소괄호가 붙어있다. 생성자가 실행되면 클래스 객체가 생성된다. 따라서 new 키워드는 생성자의 결과물로 나온 객체를 힙 메모리에 넣는다.

그럼 실제 데이터를 저장하는 객체를 힙 메모리 어디에 넣었는 지는 누가 알까? 참조변수다.

 

위 문법 구문의 의미는 클래스명 생성자()로 만든 객체를 힙 메모리에 넣고 위치값을 클래스명 타입 참조 변수명에 저장하는 것이다. -> 모든 클래스에 적용된다.

 

 

객체는 힙 메모리에 위치하고 객체 내부엔 클래스 멤버가 위치한다.

메서드는 클래스 영역 안에 저장해놓고 객체 안에선 메서드 영역 위치만 가리킨다.

-> 한 클래스에 대한 모든 객체는 속성(필드)은 달라도 기능은 동일하기 때문이다.

-> 객체 10개를 만들어도 메서드는 1번 만들어 객체들끼리 공유한다는 의미다.

 

다른 클래스로 생성된 객체의 메서드는 사용이 불가하다.

동일한 클래스로 만든 객체들의 기능의 내용은 같기 때문에 공유되는 것이다.

 

 

· 객체 활용하기 = 객체 내부 멤버를 사용하기

필드와 메서드 활용)

필드 : 참조변수명.필드명

메서드 : 참조변수명.메서드명()

A a = new A();
System.out.println(a.m);	//필드 활용
a.println()			//메서드 활용

 

자바에선 힙 메모리에 직접 접근할 수 없어, 참조변수를 포인트 연산자(.)이용해서만 객체에 접근이 가능하다. 포인트 연산자의 의미는 해당 위치에 있는 객체 안을 보는 것이다.

 

 

반응형

'JAVA > 공부' 카테고리의 다른 글

클래스 외부 구성 요소  (0) 2022.07.02
클래스 내부 구성 요소  (0) 2022.07.02
배열 성적 처리 프로그램  (0) 2022.06.26
제어문  (0) 2022.06.24
스택과 힙 영역  (0) 2022.06.23