① 객체지향 언어란?
: 코드 간의 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이다.
- 객체지향 언어의 특징
→ 캡슐화
→ 상속
→ 추상화
→ 다형성
② 객체지향 언어를 사용하는 이유
- 코드의 재사용성이 높다. > 새로운 코드를 작성할 때 기존의 코드를 이용해 쉽게 작성 가능하다.
- 코드의 관리가 용이하다. > 코드간의 관계를 이용해 쉽게 코드를 변경할 수 있다.
- 신뢰성 높은 프로그래밍을 가능하게 한다.
> 제어자와 메서드를 통해 데이터를 보호하고 코드의 중복을 제거하여 오동작을 방지할 수 있다.
③ 클래스와 객체
: 클래스란 ? 객체를 정의해 놓은 것. > 객체를 생성하는데 사용
: 객체란 ? 실제로 존재하는 것. > 객체를 가지고 있는 기능과 속성에 따라 만든다.
ex) 클래스는 제품의 설계도, 객체는 제품
④ 객체의 속성과 기능
: 속성(색깔, 전원, 볼륨) → 멤버변수
기능(켜기, 끄기, 볼륨 높이기, 볼륨 낮추기) → 메서드
class smartphone{
String color; // 색깔
boolean power; // 전원
int volume; // 소리
void power() { power= !power; }
void volumeUp() { ++volume; }
void volumeDown() { --volume; }
}
⑤ 객체와 인스턴스 (객체 ≒ 인스턴스)
: 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 한다.
⑥ 한 파일에 여러 클래스 작성하기
올바른 작성)
- public 클래스가 있는 경우, 소스파일의 이름과 public class의 이름은 반드시 일치해야 한다.
- public 클래스가 없는 경우, 소스파일의 이름은 아무거나 가능하다.
잘못된 작성)
- 하나의 소스 파일에 둘 이상의 public class가 존재하면 안 된다.
- 소스파일의 이름과 public class의 이름은 대소문자까지 일치해야 한다.
⑦ 객체의 생성과 사용
// 클래스명 변수명; 변수명 = new 클래스명();을 한 문장으로 간단히 가능.
클래스명 변수명 = new 클래스명();
class practice {
public static void main(String[] args){
smartphone sp=new smartphone();
sp.volume=3;
sp.volumeUp();
System.out.println("현재 볼륨은 "+sp.volume+" 입니다.");
}
}
class smartphone {
String color;
boolean power;
int volume;
void power() { power=!power; }
void volumeUp() { ++volume; }
void volumeDown() { --volume; }
}
결과
현재 볼륨은 4 입니다.
smartphone sp = new smartphone();
→ smartphone클래스 타입의 참조변수 sp를 선언하여 연산자 new에 의해 smartphone 클래스의 인스턴스가 메모리의 빈 공간에 생성된다. 그리고 대입연산자(=)에 의해 생성된 객체의 주소값이 참조변수 sp에 저장된다. 그러면 참조변수 sp를 통해 smartphone인스턴스에 접근할 수 있다.
sp.volume=3;
→ 참조변수 sp에 저장된 주소에 있는 인스턴스의 멤버변수 volume에 3을 저장한다.
인스턴스 멤버변수(속성)를 사용하려면 '참조변수.멤버변수'를 사용하면 된다.
sp.volumeUp();
→ 참조변수 sp가 참조하고 있는 smartphone인스턴스의 volumeUp메서드를 호출해서 volume을 1 증가 시킨다.
⑧ 객체 배열
: 많은 수의 객체를 다뤄야 할 때, 배열로 다루어 사용한다.
- 생성 방법은 객체 생성과 다를 것 없이 [] 를 붙여주기만 하면 된다.
smartphone[] spArr= new smartphone[3]; // 참조변수 객체 배열 생성
// 객체를 생성해서 배열의 각 요소에 저장
spArr[0] = new smartphone();
spArr[1] = new smartphone();
spArr[2] = new smartphone();
// 배열의 초기화 블럭을 사용
smpartphone[] spArr={ new smartphone(), new smartphone(), new smartphone() };
// 다뤄야할 객체 수가 많을 때는 for문을 사용
smartphone[] spArr = new smartphone[10];
for(int i=0; i<spArr.length; i++) {
spArr[i]=new smartphone();
}
'프로그래밍 > Java' 카테고리의 다른 글
Java_객체지향언어(3)_static메서드와 인스턴스메서드, 오버로딩, 생성자, 참조변수 this, 생성자 this() (0) | 2022.10.26 |
---|---|
Java_객체지향언어(2)_인스턴스변수, 클래스변수, 지역변수, 메서드 사용법, 기본형 매개변수와 참조형 매개변수의 차이 (0) | 2022.10.23 |
Java_배열(2) (0) | 2022.10.10 |
Java_배열(1) (2) | 2022.10.05 |
Java_조건문과 반복문(2) (0) | 2022.09.29 |