아자 와자 아자
728x90
728x90
이 게시글은 남궁성의 정석코딩 - 자바의 정석 기초편(2020최신)을 보고 공부한 내용을 정리한 게시글입니다.
틀린 내용이 있을 수 있습니다. 

 

 

객체지향 언어

객체지향 언어 = 프로그래밍 언어 + 객체지향 개념(규칙)

객체지향 언어는 1) 코드의 재사용성이 높고, 2) 중복 코드 제거, 3) 유지보수가 용이하여 보편적으로 사용한다.

객체지향 언어의 핵심 내용으로는 캡슐화, 상속, 추상화, 다형성이 있다. 

 

객체지향 언어가 보편화 된 이유

옛날의 프로그래밍은 절차형 언어(C언어)였는데, 빠른 변화에 맞출 수 없어 불편함이 많았다. ⇒ C++ 언어 탄생!

C++은 C언어에 객체지향 개념을 추가한 언어로, 좋은 기능들을 가졌지만 배우기 어려워 객체지향 개념이 확산되지 못했다.

⇒ C++의 단점을 보완한 Java가 탄생!

Java는 C++의 잘 안쓰는 기능들을 빼고, 배우기 쉽게 만들어 이때부터 객체지향 개념이 보편화되고 확산되었다.

 

 

 

 

클래스와 객체

  클래스 객체
정의 객체를 정의해 놓은 것 실제로 존재하는 것. 사물 또는 개념
용도 객체를 생성하는데 사용 객체가 가지고 있는 기능과 속성에 따라 다름

클래스가 제품 설계도라면 객체는 제품이라고 할 수 있다. (엄밀히 말하면 조금 다르지만, 개념잡기 용)

 

 

클래스

클래스 작성 규칙

- 하나에 소스파일에 하나의 클래스를 작성하는게 일반적이다.

- 소스파일의 이름과 클래스의 이름은 일치해야 한다.

- public class는 소스파일 당 하나만 있어야 한다. 없어도 되는데 여러개 있으면 안된다.

 

만약 하나의 소스파일에 여러 클래스를 작성한다면,

- public class가 있는 경우, 소스파일의 이름은 public class의 이름과 일치해야 한다.

- public class가 없는 경우, 소스파일의 이름은 안에 있는 클래스의 이름 중 하나와 같으면 된다.

 

 

객체

- 객체는 변수(속성) 메서드(기능)로 이루어져있다.

- 객체는 모든 인스턴스를 대표하는 일반적인 용어

- 인스턴스는 특정 클래스로부터 생성된 객체를 의미한다. (Tv클래스로 만들어진 객체를 Tv인스턴스라 한다)

 

 

 

 

클래스와 객체의 생성과 사용

클래스와 객체의 생성

 TV를 예를 들자면 아래와 같이 만들 수 있다.

// TV 설계도(클래스)를 만들었다.
class TV {
  String color; // tv의 색상(속성)
  boolean power; // tv의 전원(속성)
  int channel; // tv의 채널스위치(속성)

  void power() { power = !power; } // tv의 전원기능(메서드)
  void channelUp() { channel++; } // tv의 채널 위로 변경(메서드)
  void channelDown() { channel--; } // tv의 채널 아래로 변경(메서드)
}

먼저 클래스로 TV의 설계도를 만들고,

 

// TV(객체)를 생성했다.
TV t = new TV();

객체를 생성해서 TV 제품을 만든다. 

 

객체 생성 방법

(1) TV 타입을 가진 참조변수 t를 선언하고,

(2) 객체를 생성 new TV()해서

(3) 참조변수 t에 객체의 주소를 저장한다.

 

 

객체의 사용

객체가 가지고 있는 변수와 메서드를 사용한다.

// 위에 생성한 클래스를 참고
t.channel = 7; // channel 변수에 7이라는 값을 할당한다.
t.channelDown(); // channelDown()이라는 메서드를 호출한다.
System.out.println("현재 채널은 " + t.channel + "입니다."); // 현재 채널은 6입니다.

t.channel = 7  객체의 변수를 사용. 

t.channelDown()  객체의 메서드를 사용. 

channelDown() 메서드는 void channelDown() { channel--; } 이므로 channel의 값은 7-1인 6이 된다.

 

 

 

 

객체 배열

- 객체의 배열은 참조변수의 배열과 같다.

TV t1, t2, t3; // 1
TV[] tvArr = new TV[3]; // 2, 3개의 자리가 있는 배열을 만들었다.

tvArr[0] = new TV(); // 0번째 배열에 TV객체를 생성하여 할당했다.
tvArr[1] = new TV(); // 1번째 배열에 TV객체를 생성하여 할당했다.
tvArr[2] = new TV(); // 2번째 배열에 TV객체를 생성하여 할당했다.

1을 배열로 바꾸면 2로 나타낼 수 있다. 

이후 배열의 각 위치에 객체를 생성해주면 된다.

 

객체 배열 생성과 각 요소에 객체 생성을 한번에 할 수도 있다.

TV[] tvArr = { new TV(), new TV(), new TV() };

 

 


 

 

728x90
728x90

'💻 Study > Java' 카테고리의 다른 글

[Java] 객체지향개념2_변수  (0) 2023.01.30
[Java] 배열  (0) 2023.01.03
[Java] 형변환  (0) 2022.12.23
profile

아자 와자 아자

@와자!

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!