객체 : 사용할 수 있는 실체
클래스 : 객체를 만들기 위한 설계도
※ 클래스를 쓰는 이유
변수 < 배열 < 구조체 < 클래스
· 변수 : 다양한 형태의 데이터를 저장하게 해 가각의 데이터를 저장하는 문법 요소
· 배열 : 같은 자료형인 변수를 묶어서 관리 가능한 문법 요소
· 구조체 : 서로 다른 자료형을 묶어서 관리 가능한 문법 요소
· 클래스 : 다양한 자료형의 데이터를 묶어서 관리하기도 하지만 데이터 처리하는 다양한 기능도 함께 관리하는 문법 요소
클래스/인터페이스
일반메서드/추상메서드
클래스 문법)
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 |