객체
- 클래스로 부터 생성되며 new 클래스(); 로 생성
- 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지며 식별 가능한 것
- 속성 (필드(field)) + 동작(메서드(method))로 구성
- 필드 -데이터(속성) / 메서드 - 기능(동작)
객체와 객체 간의 상호작용
- 메서드를 통해 객체들이 상호작용
- 메서드 호출 : 객체가 다른 객체의 기능을 이용하는 것
int result = Calculator.add(10, 20);
리턴한 값을 int 변수에 저장
사람(객체)이 계산기(객체)의 더하기(메서드) 기능을 이용할 때 위해서는 메서드를 호출하여 전자계산기에서의 리턴 값을 전달해준다.
이때 10과 20을 사람이 계산기에게 전달해준다. 이때 10,20은 매개값이라 한다.
사람은 30 이라는 리턴값을 result라는 변수에 저장해서 사용한다.
객체 간의 관계
- 객체가 사용 관계, 집합 관계, 상속 관계를 가지면서 하나의 프로그램을 만드는 기법을 우리는 객체지향 프로그래밍이라고 한다.
- 집합 관계
- 부품과 완성품의 관계
- 사용 관계
- 객체 간의 상호작용
- 상속 관계
- 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성
클래스
- 자바에서 설계도가 클래스 이다.
- 설계도를 가지고 만든 결과물을 객체라고 한다.
- 즉 객체를 만들기 위한 설계도이다.
- 인스턴스 (instance): 클래스로부터 만들어진 객체라는 뜻으로 인스턴스= 객체 같은 말 이다. 객체는 클래스의 인스턴스
- 객체지향 프로그래밍 단계 (클래스 설계 -> 클래스로 객체 생성 -> 객체 이용)
- 클래스로부터 객체를 만드는 과정을 인스턴스화 라고 표현한다.
클래스 선언
- 객체 구상 후 클래스 이름을 결정
- 식별자 작성 규칙에 따라야함
- 하나 이상의 문자로 이루어질 것
- 첫 글자에는 숫자 올 수 없음
- $, _ 외 특수 문자는 사용할 수 없음
- 자바 키워드는 사용할 수 없음 (for, int, if 등..)
- 식별자 작성 규칙에 따라야함
Calculator, Car, Member, ChatClient, ChatServer, Web_Browser 등
- '클래스 이름.java'로 소스 파일 생성
public class 클래스이름 {
}
클래스로부터 객체를 생성
- new 는 객체를 생성해라 라는 뜻의 연산자이다. 객체생성 번지를 리턴한다.
- new 클래스();
- new 연산자로 메모리 힙 메모리 영역에 객체 생성
- 객체 생성 후 객체 번지가 리턴(클래스 변수에 저장하여 객체 사용 가능)
- 클래스 변수 : 클래스로 선언한 변수이며 해당 클래스의 객체 번지가 저장됨
객체 생성 방법 1.
클래스 변수;
변수 = new 클래스();
클래스 타입으로 변수 선언 후 new 클래스(); 를 이용해 객체 번지를 변수에 저장
객체 생성 방법 2.
클래스 변수 = new 클래스();
클래스 타입의 변수 선언과 동시에 new 클래스(); 객체를 생성해서 그 번지를 변수에 대입 할 수도 있다.
public class Student {
}
public class StudentExample {
public static void main(String[] args) {
Student s1 = new Student();
System.out.println("s1 변수가 Student 객체를 참조")
Student s2 = new Student();
System.out.println("s2 변수가 또 다른 Student 객체를 참조")
}
}
클래스의 두 용도
라이브러리 클래스
- 객체 생성 역할 -Student.java
실행 클래스
- 실행을 목적 -main() 메서드 갖고있음- StudentExample.java
클래스 멤버
- 클래스에 선언되는 멤버로 필드, 생성자, 메소드가 있다.
- 필드
- 객체가 생성 될 때 데이터를 저장하는 곳
- 생성자
- 클래스를 가지고 객체를 생성하는 코드
- 메소드
- 객체가 생성되고 나서 객체의 동작부분을 어떻게 할 것인가
혼자공부하는 자바
'Java' 카테고리의 다른 글
[Java] 생성자 (0) | 2022.02.09 |
---|---|
[JAVA] 필드 (0) | 2022.02.08 |
[JAVA ] 참조 타입(배열) (0) | 2022.01.31 |
[JAVA ] 참조 타입(참조타입과 참조변수) (0) | 2022.01.30 |
[JAVA ] 조건문 (if문, switch문,for문, while문, do-while문, break, continue, label) (0) | 2022.01.26 |