-
[자바의 정석] 객체지향 언어 & 클래스와 객체JAVA 2022. 10. 12. 12:11728x90반응형
객체지향 언어 란?
- 코드의 재사용성을 높여준다.
- 코드의 관리가 쉬워진다.
- 신뢰성이 높은 프로그램의 개발을 가능하게 한다.
클래스와 객체
클래스는 객체를 정의해 놓은 것을 말한다.
객체는 속성과 기능을 가진 개념을 말한다.
- 객체(Object)는 인스턴스(instance)를 포함하는 일반적인 의미이다.
예를 들어 붕어빵 기계는 클래스이고 붕어빵은 객체가 된다.객체의 구성요소
객체는 속성(변수)과 기능(메서드)으로 이루어져 있으며 속성과 기능을 합쳐서 멤버라고 한다.
class Tv{ // 속성(변수) String color; boolean power; int channel; // 기능(메서드) void power(){power = !power;} void channelUp(){channel++;} void channelDown(){channel--;} }
인스턴스의 생성과 사용
- 인스턴스를 생성한다는 것은 클래스로부터 인스턴스를 생성하는 것을 말한다.
Tv t1; // 객체를 다루기 위한 참조변수 선언 t1 = new Tv(); // 객체 생성 후, 생성된 객체의 주소를 참조변수에 저장한다. Tv t2 = new Tv(); // 위 과정을 한줄로 표현할 수 있다.
- 인스턴스를 사용한다는 것은 객체의 속성과 기능을 사용하는 것을 말한다.
Tv t = new Tv(); // 객체(Tv) 생성 후 참조변수(t)에 주소를 저장한다. t.channel = 7; // 속성(변수)에 값을 초기화해준다. t.channelDown(); // 기능(메서드)를 사용한다. System.out.println(t.channel); // 6
- 여러 개의 참조 변수가 한 개의 인스턴스 주소를 가지고 있을 수 있다.
- 한 개의 참조 변수가 여러 개의 인스턴스를 가지고 있을 수는 없다.
// 지금은 각각의 참조변수에 다른 주소가 저장되어 있다. Tv t1 = new Tv(); Tv t2 = new Tv(); // 참조변수 t2에 t1에 저장되어 있는 객체의 주소를 저장한다. // 이제 t1,t2는 같은 주소 값을 가지게 된다. t2 = t1; t1.channel = 7; // t1에 저장되어 있는 객체의 속성(변수) 값을 초기화 해준다. System.out.println(t1.channel); // 7 System.out.println(t2.channel); // 7 // t2에 저장되어 있는 객체의 주소가 t1과 동일하기 때문에 가능하다.
클래스의 또 다른 정의
클래스는 구조체와 함수가 결합한 형태를 의미한다.
- 구조체는 타입에 관계없이 서로 관련된 데이터들을 저장할 수 있는 공간을 말한다.
// 클래스 없이 별도로 존재하는 변수 int hour; int minute; int second; // 클래스를 사용해 서로 관련된 값을 묶어서 하나의 타입으로 정의 class Time{ int hour; int minute; int second; }
배열을 통해 여러 개의 객체를 저장할 수 있다.
class Time{ int hour; int minute; int second; } // 배열을 통해 여러개의 객체를 한개의 참조변수로 접근할 수 있다. Time[] t = new Time[3]; t[0] = new Time(); t[1] = new Time(); t[2] = new Time(); // 사용하는 방법 t[0].hour = 4; System.out.println(t[0].hour); // 4
728x90반응형'JAVA' 카테고리의 다른 글
[자바의 정석] 생성자 & 변수의 초기화 (0) 2022.10.14 [자바의 정석] 변수와 메소드 & 메소드 오버로딩 & JVM 구조 (0) 2022.10.14 [Java] 자바의 정석 객체지향 part 복습 (1) 2022.09.30 [프로그래머스 2단계 - JAVA] 게임 맵 최단거리 (1) 2022.09.29 [프로그래머스 1단계 - JAVA] 하샤드 수 (1) 2022.09.16