목차
클래스와 객체
- 클래스
- 객체 지향
- String 클래스
클래스
- 클래스(class) : 객체를 만드는 설계도(도면)
- 클래스로부터 만들어지는 각각의 객체를 특별히 그 클래스의 **인스턴스(instance)**라고도 한다.
- 객체를 클래스라는 설계도로 생성된다.
클래스와 객체
클래스의 구조
class 클래스이름 {
// 필드 정의
public int field1; // 객체의 속성
// 메소드 정의
void method1(parameter) { ... } // 객체의 동작을 나타낸다
}
클래스의 구조 (TV)
class Tv {
private int ch;
private int vol;
private boolean power;
void Tv() { // 생성자
this.ch = 1;
this.vol = 10;
this.power = true;
}
void chChange(int ch) { // 채널 변경 메소드 == 동작
this.ch = ch;
}
...
}
객체 생성
- 미리 만들어놓은 클래스로 객체를 생성하여 보자.
Tv mytv = new Tv();
→ new 라는 연산자를 이용하여 Tv의 객체를 생성하고 객체의 메모리 참조값을 mytv라는 변수에 대입합니다.
즉 mytv는 참조변수입니다.
- 자바에서 객체를 생성하는 방법은 new 한가지뿐입니다.
기초 변수와 참조 변수
- 기초 변수
- byte
- int
- long
기초 변수는 변수에 실제 데이터가 저장되는 것이다.
- 참조 변수
- 배열
- 클래스
- 인터페이스
참조 변수는 변수에 실제 데이터가 저장된 메모리의 주소가 저장되는 것이다.
객체의 필드와 메소드 접근
- 도트( . ) 연산자를 사용한다.
mytv.ch = 100;
→ mytv의 ch 필드에 접근을 한다는 의미입니다.
- 하지만 위에서 작성한 class에서 ch 필드는 private 이기때문에 객체 내부에서만 접근을 할 수 있습니다.
- 외부에서 접근이 가능하게 하려면 public 이나 기타 접근지정자를 써야합니다.
mytv.chChange(50);
→ mytv의 chChange 메소드를 이용하여 객체 내부의 ch의 값을 변경합니다.
메소드
- 메소드는 입력을 받아서 처리를 하고 결과를 반환하는 가상적인 상자와 같다.
메소드의 구조
인수와 매개 변수
- 메소드 호출시 전달하는 값을 인수(argument)
- 메소드에서 값을 받을 때 사용하는 변수를 매개 변수(parameter)
인수
mytv.chChange(50); // 50이라는 값이 인수
매개 변수
class mytv {
private int ch;
void chChange(int ch) { // int ch가 매개 변수에 해당
this.ch = ch;
}
}
- 메소드 안에서 this 문을 사용하는 이유는 매개 변수와 필드가 동일하게 ch로 작명이 되어져 있는데 “ch = ch” 을 하면 시스템 내부 상으로 가장 가까운 변수를 찾아 값이 대입되기 때문에 매개 변수 ch에 매개 변수 ch의 값이 대입되기 때문에 mytv 클래스(this)의 ch을 뜻한다고 컴퓨터에게 알려 주는 것
객체의 일생
객체의 생성 → 객체의 사용 → 객체의 소멸
객체의 생성
참조값을 복사한다면?
Car yourCar = myCar;
- 두 개의 참조 변수가 하나의 객체를 가리키게 된다.
객체의 소멸
Car car1 = new Car(); // 1번 객체
Car car2 = new Car(); // 2번 객체
→ → →
car2 = car1; // car1와 car2가 같은 객체를 가리키게 된다.
그러면 원래 car2가 가리키던 객체는 추후 **쓰레기 수집기(Garbage Collector)**에 의하여 자동으로 메모리 공간을 비운다.
문자열 객체
- 자바에서 문자열은 객체이다.
문자열 객체 생성
String s = new String("Hello World!");
문자열 객체의 메소드 호출
String s = new String("Hello World!");
int leng = s.length();
// 12
문자열 클래스의 메소드
클래스와 객체
- 클래스
- 객체 지향
- String 클래스
클래스
- 클래스(class) : 객체를 만드는 설계도(도면)
- 클래스로부터 만들어지는 각각의 객체를 특별히 그 클래스의 **인스턴스(instance)**라고도 한다.
- 객체를 클래스라는 설계도로 생성된다.
클래스와 객체
클래스의 구조
class 클래스이름 {
// 필드 정의
public int field1; // 객체의 속성
// 메소드 정의
void method1(parameter) { ... } // 객체의 동작을 나타낸다
}
클래스의 구조 (TV)
class Tv {
private int ch;
private int vol;
private boolean power;
void Tv() { // 생성자
this.ch = 1;
this.vol = 10;
this.power = true;
}
void chChange(int ch) { // 채널 변경 메소드 == 동작
this.ch = ch;
}
...
}
객체 생성
- 미리 만들어놓은 클래스로 객체를 생성하여 보자.
Tv mytv = new Tv();
→ new 라는 연산자를 이용하여 Tv의 객체를 생성하고 객체의 메모리 참조값을 mytv라는 변수에 대입합니다.
즉 mytv는 참조변수입니다.
- 자바에서 객체를 생성하는 방법은 new 한가지뿐입니다.
기초 변수와 참조 변수
- 기초 변수
- byte
- int
- long
기초 변수는 변수에 실제 데이터가 저장되는 것이다.
- 참조 변수
- 배열
- 클래스
- 인터페이스
참조 변수는 변수에 실제 데이터가 저장된 메모리의 주소가 저장되는 것이다.
객체의 필드와 메소드 접근
- 도트( . ) 연산자를 사용한다.
mytv.ch = 100;
→ mytv의 ch 필드에 접근을 한다는 의미입니다.
- 하지만 위에서 작성한 class에서 ch 필드는 private 이기때문에 객체 내부에서만 접근을 할 수 있습니다.
- 외부에서 접근이 가능하게 하려면 public 이나 기타 접근지정자를 써야합니다.
mytv.chChange(50);
→ mytv의 chChange 메소드를 이용하여 객체 내부의 ch의 값을 변경합니다.
메소드
- 메소드는 입력을 받아서 처리를 하고 결과를 반환하는 가상적인 상자와 같다.
메소드의 구조
인수와 매개 변수
- 메소드 호출시 전달하는 값을 인수(argument)
- 메소드에서 값을 받을 때 사용하는 변수를 매개 변수(parameter)
인수
mytv.chChange(50); // 50이라는 값이 인수
매개 변수
class mytv {
private int ch;
void chChange(int ch) { // int ch가 매개 변수에 해당
this.ch = ch;
}
}
- 메소드 안에서 this 문을 사용하는 이유는 매개 변수와 필드가 동일하게 ch로 작명이 되어져 있는데 “ch = ch” 을 하면 시스템 내부 상으로 가장 가까운 변수를 찾아 값이 대입되기 때문에 매개 변수 ch에 매개 변수 ch의 값이 대입되기 때문에 mytv 클래스(this)의 ch을 뜻한다고 컴퓨터에게 알려 주는 것
객체의 일생
객체의 생성 → 객체의 사용 → 객체의 소멸
객체의 생성
참조값을 복사한다면?
Car yourCar = myCar;
- 두 개의 참조 변수가 하나의 객체를 가리키게 된다.
객체의 소멸
Car car1 = new Car(); // 1번 객체
Car car2 = new Car(); // 2번 객체
→ → →
car2 = car1; // car1와 car2가 같은 객체를 가리키게 된다.
그러면 원래 car2가 가리키던 객체는 추후 **쓰레기 수집기(Garbage Collector)**에 의하여 자동으로 메모리 공간을 비운다.
문자열 객체
- 자바에서 문자열은 객체이다.
문자열 객체 생성
String s = new String("Hello World!");
문자열 객체의 메소드 호출
String s = new String("Hello World!");
int leng = s.length();
// 12