[Java] ๊ฐ์ฒด(Object)์ ํด๋์ค(Class)์ ๋ํด
by rlaehddnd0422ํ๋ก๊ทธ๋จ์ ๊ท๋ชจ๊ฐ ์ ์ ์ปค์ง๊ณ ์ฌ์ฉ์๋ค์ ์๊ตฌ๊ฐ ๋น ๋ฅด๊ฒ ๋ณํํด๊ฐ๋ ์ํฉ์ ์ ์ฐจ์ ์ธ์ด๋ก๋ ๊ทน๋ณตํ๊ธฐ ์ด๋ ต๋ค๋ ํ๊ณ๋ฅผ ๋๋ผ๊ณ ๊ฐ์ฒด์งํฅ์ธ์ด๋ฅผ ์ด์ฉํ ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ์ด ๋์์ผ๋ก ๋ ์ค๋ฆ๊ณผ ๋์์ ์๋ฐ๊ฐ ๋ฐํ๋๊ณ ๊ฐ์ฒด์งํฅ์ธ์ด๋ ์ด์ ํ๋ก๊ทธ๋๋ฐ์ธ์ด์ ์ฃผ๋ฅ๋ก ์๋ฆฌ ์ก์์ต๋๋ค.
1. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object-oriented Programming)์ด๋?
์ฝ๊ฒ ๋งํด ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ผ๋ก ๋๋๋๊ฒ ์๋๊ณ , ํ๋ก๊ทธ๋จ์ ๋ค์์ "๊ฐ์ฒด"๋ฅผ ๋ง๋ค๊ณ , ๊ฐ์ฒด ๊ฐ์ ์ํธ์์ฉ์ ํตํด ํ๋ก๊ทธ๋จ์ด ๋์ํ๋๋ก ์ค๊ณํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ์ด๋ผ๊ณ ํด์ ๊ธฐ์กด ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์ ํ ๋ค๋ฅธ ๋ฐฉ์์ด๋ผ๊ณ ๋๋ ์ ์์ง๋ง, ์ฌ์ค ๊ธฐ์กด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ช ๊ฐ์ง ์๋ก์ด ๊ท์น๋ค๋ง ์ถ๊ฐํ์ฌ ๋ฐ์ ๋ ํํ์ ๋๋ค.
๊ฐ์ฒด ์งํฅ ์ธ์ด = ํ๋ก๊ทธ๋๋ฐ ์ธ์ด + ๊ฐ์ฒด์งํฅ๊ฐ๋ (๊ท์น)
๊ฐ์ฒด์งํฅ ์ธ์ด์ ํน์ง
- ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค : ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ธฐ์กด์ ์ฝ๋๋ฅผ ์ด์ฉํด ์ฝ๊ฒ ์์ฑํ ์ ์์.
- ์ฝ๋์ ์ ์ง๋ณด์๊ฐ ์ฝ๋ค : ์ฝ๋๊ฐ์ ๊ด๊ณ๋ฅผ ์ด์ฉํด ์ ์ ๋ ธ๋ ฅ์ผ๋ก ์ฝ๊ฒ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ์ ์์.
- ์ ๋ขฐ์ฑ์ด ๋์ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํ๋ค : ์ ์ด์์ ๋ฉ์๋๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๊ณ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ ์งํ๋๋ก ํ๋ฉฐ, ์ฝ๋์ ์ค๋ณต์ ์ ๊ฑฐํ์ฌ ์ฝ๋์ ๋ถ์ผ์น๋ก ์ธํ ์ค๋์์ ๋ฐฉ์งํ ์ ์์.
2. ํด๋์ค
ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ค๊ณ๋์ ๋๋ค.
ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋๋ฉฐ, ์ญ์ผ๋ก ๋งํ๋ฉด ๊ฐ์ฒด๋ ํด๋์ค์ ์ํด ์์ฑ๋ฉ๋๋ค.
- ํด๋์ค ๊ตฌ์ฑ์์
๊ตฌ์ฑ์์ | ์ค๋ช |
ํ๋ | ๊ฐ์ฒด์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๊ณณ์ผ๋ก ๋ฉค๋ฒ ๋ณ์๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. |
๋ฉ์๋ | ๊ฐ์ฒด์ ์ด๋ค ํน์ ์์ ์ ์ํํ๊ธฐ ์ํ ํจ์์ ๋๋ค. |
์์ฑ์ | new ์ฐ์ฐ์๋ก ํธ์ถ๋๋ ๋ฉ์๋๋ก ๊ฐ์ฒด ์์ฑ ์ ํ๋์ ์ด๊ธฐํ๋ฅผ ๋ด๋นํฉ๋๋ค. |
์๋ฅผ๋ค๋ฉด ์๋์ฐจ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ํด๋์ค๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
package oop.classAndInstance;
public class Car {
public String modelName; // ํ๋
public String modelYear; // ํ๋
public String color; // ํ๋
private Long currentSpeed;
public Long maxSpeed; // ํ๋
// ์์ฑ์
public Car(String modelName, String modelYear, String color, Long currentSpeed, Long maxSpeed) {
this.modelName = modelName;
this.modelYear = modelYear;
this.color = color;
this.currentSpeed = currentSpeed;
this.maxSpeed = maxSpeed;
}
public void brake() { // ๋ฉ์๋ - ์ธ์คํด์ค๊ฐ ํน์ ์์
์ ์ํํ๊ธฐ ์ํ ํจ์
this.currentSpeed = 0L;
}
public void accelerate() { // ๋ฉ์๋
this.currentSpeed++;
}
}
์ ์ค๊ณ๋์ ์ํด ๋ง๋ค์ด์ง ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ ๋ชจ๋ ์์ ๊ฐ์ ํ๋์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
๋ฉ์๋ ์ ์ํ๋ ๋ฐฉ๋ฒ
์ ๊ทผ์ ์ด์ ๋ฆฌํดํ์
๋ฉ์๋์ด๋ฆ(๋งค๊ฐ๋ณ์ ๋ฆฌ์คํธ) { // ์ ์ธ๋ถ
// ๊ตฌํ๋ถ
}
1. ์ ๊ทผ ์ ์ด์ : ํด๋น ๋ฉ์๋์ ์ ๊ทผํ ์ ์๋ ๋ฒ์ ( private, public, protected, default )
2. ๋ฆฌํด ํ์ : ๋์์ ๋ง์น๊ณ ๋ฆฌํดํ๋ ํ์
3. ๋ฉ์๋ ์ด๋ฆ : ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ํ ์ด๋ฆ
4. ๋งค๊ฐ๋ณ์ ๋ฆฌ์คํธ : ๋ฉ์๋ ํธ์ถ ์ ์ ๋ฌ๋๋ ์ธ์ ๊ฐ๋ค
5. ๊ตฌํ๋ถ : ๊ณ ์ ๊ธฐ๋ฅ์ ์ํํ๋ ๊ตฌํ๋ถ
3. ์ธ์คํด์ค
ํด๋์ค(์ค๊ณ๋)์ ์ํด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋งํฉ๋๋ค. ๊ฐ์ฒด๋ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ๋ํํ๋ ํฌ๊ด์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ, ์ด๋ค ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ํน์ ํ ๊ฐ์ฒด๋ฅผ ์นญํ ๋ ์ธ์คํด์ค๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ ์๋ฏธ๋ผ๊ณ ๋ณด์ ๋ ๋ฌด๋ฐฉํฉ๋๋ค.
์ธ์คํด์ค๋ฅผ ์์ฑํ ๋๋ ์์ ๊ฐ์ด ์ ์ธ๋ ํด๋์ค์ ์ ์๋ฅผ ๊ฐ์ง๊ณ new ํค์๋์ ํจ๊ป ์ฌ์ฉํ์ฌ ์ ์ธ๊ณผ ๋์์ ์์ฑํ ์ ์์ต๋๋ค.
Car car = new Car();
๊ฐ์ฒด(์ธ์คํด์ค)๋ ํด๋์ค์์ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ฑ(property)๊ณผ ๊ธฐ๋ฅ(function)์ ๊ฐ์ง๋๋ค.
- ์์ฑ
- ํน์ฑ, ํ๋, ์ํ์ ๊ด๋ จ๋ ๋ฉค๋ฒ ๋ณ์
- ๊ธฐ๋ฅ
- ํจ์, ํ์์ ๊ด๋ จ๋ ๋ฉ์๋
public class CarTest {
public static void main(String[] args) {
Car car = new Car("RANGE ROVER EVOQUE", "2018", "RED", 50L, 200L);
car.brake();
car.accelerate();
}
}
์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ค ํด๋์ค์ ์ ์๋์ด ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๋ฉด ์์ฒ๋ผ . ์ ํ์ฉํด ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
<์ฐธ๊ณ ์๋ฃ>
'๐ Backend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] this์ this()์ ๋ํด (0) | 2023.09.25 |
---|---|
[Java] static variable, static method์ ๋ํด (0) | 2023.09.22 |
[Java] PS์์ ์์ฃผ ์ฌ์ฉํ๋ ์ ๋ ฅ ํด๋์ค์ ๋ํด (0) | 2023.09.21 |
[Java] ํ์ค ์ ์ถ๋ ฅ ํด๋์ค System์ ๋ํด (0) | 2023.09.21 |
[Java] JVM(Java Virtual Machine)์ ๊ตฌ์กฐ์ ๋์๋ฐฉ์์ ๋ํด (0) | 2023.09.21 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422