μΆμ²
ChatGPT
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ νλ‘κ·Έλλ° ν¨λ¬λ€μμ νλλ‘, νλ‘κ·Έλ¨μ κ°μ²΄λΌλ λ¨μλ‘ κ΅¬μ±νμ¬ κ°λ°νλ λ°©λ²λ‘ μ΄λ€. κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λ°μ΄ν°μ κ·Έ λ°μ΄ν°λ₯Ό μ‘°μνλ λ©μλλ₯Ό νλμ λ¨μλ‘ λ¬Άμ΄ νλ‘κ·Έλ¨μ μ€κ³νκ³ κ΅¬ννλ λ°©μμ΄λ€. μ΄ ν¨λ¬λ€μμ μννΈμ¨μ΄ μ€κ³μ κ°λ°μ λ³΄λ€ ν¨μ¨μ μ΄κ³ μ¬μ¬μ© κ°λ₯νκ² λ§λ€κΈ° μν λ°©λ²μ μ 곡νλ€.
κ°μ²΄μ§ν₯μ μ£Όμ κ°λ
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ¬λ¬ κ°λ μ μ€μ¬μΌλ‘ ꡬμΆλλ€.
1. ν΄λμ€ Class
μ μ
ν΄λμ€λ κ°μ²΄λ₯Ό μμ±νκΈ° μν μ²μμ λλ ν νλ¦Ώμ΄λ€. ν΄λμ€λ λ°μ΄ν°(νλ, μμ±)μ κ·Έ λ°μ΄ν°λ₯Ό μ‘°μνλ λ°©λ²(λ©μλ)μ μ μνλ€.
μμ
public class Car {
// νλ (μμ±)
private String color;
private String model;
// μμ±μ
public Car(String color, String model) {
this.color = color;
this.model = model;
}
// λ©μλ (νλ)
public void startEngine() {
System.out.println("Engine started.");
}
public void drive() {
System.out.println("Car is driving.");
}
}
2. κ°μ²΄ Object
μ μ
κ°μ²΄λ ν΄λμ€λ₯Ό κΈ°λ°μΌλ‘ μμ±λ μ€μ²΄(instance)μ΄λ€. κ°μ²΄λ μν(state)μ νλ(behavior)μ κ°μ§κ³ μμΌλ©°, μ΄ μνλ ν΄λμ€μ νλλ₯Ό ν΅ν΄ μ μ₯λκ³ , νλμ ν΄λμ€μ λ©μλλ₯Ό ν΅ν΄ μ€νλλ€.
νΉμ§
- μν: κ°μ²΄κ° κ°μ§κ³ μλ λ°μ΄ν°(μ: color, model).
- νλ: κ°μ²΄κ° μνν μ μλ λμ(μ: startEngine, drive).
μμ
public class Main {
public static void main(String[] args) {
// κ°μ²΄ μμ±
Car car1 = new Car("Red", "Toyota");
Car car2 = new Car("Blue", "Honda");
// κ°μ²΄ μ¬μ©
car1.startEngine();
car2.drive();
}
}
3. μΊ‘μν Excapsulation
μ μ
μΊ‘μνλ κ°μ²΄μ μν(λ°μ΄ν°)λ₯Ό μΈλΆμμ μ§μ μ κ·Όνμ§ λͺ»νλλ‘ νκ³ , λ©μλλ₯Ό ν΅ν΄μλ§ μ κ·Όνκ±°λ λ³κ²½ν μ μλλ‘ νλ κ²μ΄λ€. μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°μ 무결μ±κ³Ό μΌκ΄μ±μ μ μ§ν μ μλ€.
μ₯μ
- κ°μ²΄μ λ΄λΆ ꡬνμ μ¨κΈ°κ³ , κ°μ²΄μ μ¬μ©μμκ² μΈν°νμ΄μ€λ§ μ 곡νλ€.
- λ°μ΄ν° λ³΄νΈ λ° λ¬΄κ²°μ± μ μ§
- μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ± ν₯μ
μμ
public class Car {
// νλ
private String color;
private String model;
// μμ±μ
public Car(String color, String model) {
this.color = color;
this.model = model;
}
// Getter λ©μλ
public String getColor() {
return color;
}
// Setter λ©μλ
public void setColor(String color) {
this.color = color;
}
}
4. μμ Inheritance
μ μ
μμμ μλ‘μ΄ ν΄λμ€κ° κΈ°μ‘΄μ ν΄λμ€μ μμ±κ³Ό λ©μλλ₯Ό μμλ°μ μ¬μ¬μ©νκ³ νμ₯ν μ μλ κΈ°λ₯μ μ 곡νλ€. μ΄λ₯Ό ν΅ν΄ μ½λμ μ€λ³΅μ μ€μ΄κ³ , 곡ν΅μ μΈ κΈ°λ₯μ μ½κ² μ μ§λ³΄μν μ μλ€.
μ₯μ
- μ½λ μ¬μ¬μ©μ± μ¦λ
- κ³μΈ΅μ μΈ ν΄λμ€ κ΅¬μ‘° μ€κ³
- μ μ§λ³΄μ λ° νμ₯ μ©μ΄
μμ
// μμ ν΄λμ€ (λΆλͺ¨ ν΄λμ€)
public class Vehicle {
public void start() {
System.out.println("Vehicle started.");
}
}
// νμ ν΄λμ€ (μμ ν΄λμ€)
public class Car extends Vehicle {
public void drive() {
System.out.println("Car is driving.");
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car();
myCar.start(); // λΆλͺ¨ ν΄λμ€μ λ©μλ νΈμΆ
myCar.drive(); // μμ ν΄λμ€μ λ©μλ νΈμΆ
}
}
5. λ€νμ± Poymorphism
μ μ
λ€νμ±μ λμΌν μΈν°νμ΄μ€λ λΆλͺ¨ ν΄λμ€λ₯Ό ν΅ν΄ κ°μ²΄λ€μ΄ λ€μν νλλ‘ λμν μ μκ² νλ κΈ°λ₯μ΄λ€. μ£Όλ‘ λ©μλ μ€λ²λ‘λ©(Overloading)κ³Ό λ©μλ μ€λ²λΌμ΄λ©(Overriding)μ ν΅ν΄ ꡬνλλ€.
μ₯μ
- μ½λμ μ μ°μ±κ³Ό νμ₯μ± ν₯μ
- κ°μ μ½λκ° λ€μν λ°μ΄ν° νμ κ³Ό λ©μλλ₯Ό μ²λ¦¬ν μ μμ
μμ
// λΆλͺ¨ ν΄λμ€
public class Animal {
public void sound() {
System.out.println("Some sound");
}
}
// μμ ν΄λμ€
public class Dog extends Animal {
@Override
public void sound() {
System.out.println("Bark");
}
}
// μμ ν΄λμ€
public class Cat extends Animal {
@Override
public void sound() {
System.out.println("Meow");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.sound(); // Output: Bark
myCat.sound(); // Output: Meow
}
}
6. μΆμν Abstraction
μ μ
μΆμνλ 볡μ‘ν μμ€ν μ λ¨μννμ¬ νμμ μΈ κ°λ λ§μ λͺ¨λΈλ§νλ κ²μ΄λ€. μ΄λ₯Ό ν΅ν΄ μΈλΆ ꡬνμ κ°μΆκ³ μ¬μ©μμκ² μ€μν κΈ°λ₯λ§μ μ 곡νλ€.
μ₯μ
- μ½λμ 볡μ‘μ±μ μ€μ΄κ³ , μ€μ μ 보μ μ§μ€ κ°λ₯
- μΈν°νμ΄μ€λ₯Ό ν΅ν΄ λ€μν ꡬν체λ₯Ό μ κ³΅ν΄ μ μ°μ± μ¦λ
μμ
// μΆμ ν΄λμ€
public abstract class Animal {
public abstract void sound(); // μΆμ λ©μλ
}
// ꡬ체μ ν΄λμ€
public class Dog extends Animal {
@Override
public void sound() {
System.out.println("Bark");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.sound(); // Output: Bark
}
}
κ°μ²΄μ§ν₯μ μ₯μ
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ¬λ¬ μ₯μ μ ν΅ν΄ μννΈμ¨μ΄ κ°λ°μ λ³΄λ€ ν¨μ¨μ μ΄κ³ κ΄λ¦¬νκΈ° μ½κ² λ§λ λ€.
1. μ½λ μ¬μ¬μ©μ±
μμμ ν΅ν΄ κΈ°μ‘΄μ μ½λλ₯Ό μ¬μ¬μ©νκ³ νμ₯ν μ μλ€. μ€λ³΅ μ½λκ° μ€μ΄λμ΄ μ μ§λ³΄μκ° μ©μ΄ν΄μ§λ€.
2. μ½λμ λͺ¨λν
κ°μ²΄λ μ½λμ λͺ¨λνλ₯Ό μ΄μ§ν΄ κ° κ°μ²΄κ° λ 립μ μΌλ‘ κ°λ°, ν μ€νΈ, μ μ§λ³΄μλ μ μκ² νλ€. μ΄λ λκ·λͺ¨ νλ‘μ νΈμ νΉν μ 리νλ€.
3. μ μ§λ³΄μμ±
μΊ‘μνλ₯Ό ν΅ν΄ λ°μ΄ν°μ λ©μλλ₯Ό 보νΈνμ¬ μ½λμ μμ μ±κ³Ό μΌκ΄μ±μ μ μ§ν μ μλ€. λ³κ²½μ΄ νμν λΆλΆλ§ μμ νγ γ΄ λλ―λ‘ μ μ§λ³΄μκ° μ©μ΄νλ€.
4. νμ₯μ±
λ€νμ±κ³Ό μΆμνλ μ½λμ νμ₯μ±μ λμ¬ μλ‘μ΄ κΈ°λ₯μ μΆκ°ν λ κΈ°μ‘΄ μ½λμ μν₯μ μ΅μννλ€.
5. μ§κ΄μ μΈ μ€κ³
νμ€ μΈκ³μ λ¬Έμ λ₯Ό κ°μ²΄μ ν΄λμ€λΌλ μμ°μ€λ¬μ΄ λ°©μμΌλ‘ λͺ¨λΈλ§ν μ μλ€. μ΄λ κ°λ°μκ° λ¬Έμ λλ©μΈμ μ΄ν΄νκ³ ν΄κ²°μ± μ μ€κ³νλ λ° λμμ΄ λλ€.
κ°μ²΄μ§ν₯μ λ¨μ
1. 볡νμ± μ¦κ°
κ°μ²΄μ§ν₯ μ€κ³λ μ΄κΈ° μ€κ³ λ¨κ³μμ μλΉν μκ°κ³Ό λ Έλ ₯μ΄ νμν μ μλ€. νΉν, κ°μ²΄ κ°μ κ΄κ³κ° 볡μ‘ν΄μ§λ©΄ κ΄λ¦¬νκΈ° μ΄λ €μΈ μ μλ€.
2. μ±λ₯ μ ν
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λμ νΉμ§(μ μμ, λ€νμ±)μ μ’ μ’ μ€ν μλλ₯Ό μ νμν€κ³ λ©λͺ¨λ¦¬ μ¬μ©μ μ¦κ°μν¬ μ μλ€.
3. μΆμνμ νκ³
μΆμνκ° κ³Όλνκ² μ΄λ£¨μ΄μ§λ©΄ μ€νλ € μ½λμ κ°λ μ±κ³Ό μ΄ν΄λλ₯Ό λ¨μ΄λ¨λ¦΄ μ μλ€. μ μ ν μΆμν μμ€μ μ μ§νλ κ²μ΄ μ€μνλ€.
4. λ©λͺ¨λ¦¬ μ¬μ©
κ°μ²΄κ° λ§μ΄ μμ±λλ©΄ ν λ©λͺ¨λ¦¬λ₯Ό κ³Όνκ² μ¬μ©ν μ μλ€. μ΄λ λ©λͺ¨λ¦¬ κ΄λ¦¬μ μ±λ₯ μ΅μ νμ μ£Όμν΄μΌ ν¨μ μλ―Ένλ€.
κ²°λ‘
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μννΈμ¨μ΄ κ°λ°μμ ꡬ쑰μ μ΄κ³ λͺ¨λνλ μ κ·Ό λ°©μμ μ 곡νμ¬ μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ ν₯μμν¨λ€. ν΄λμ€μ κ°μ²΄λ₯Ό κΈ°λ°μΌλ‘ νλ μ€κ³λ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ 볡μ‘ν λ¬Έμ λ₯Ό λ³΄λ€ μ½κ² ν΄κ²°ν μ μλλ‘ λλλ€. OOPμ ν΅μ¬ κ°λ μΈ μΊ‘μν, μμ, λ€νμ±, μΆμνλ μ΄λ₯Ό κ°λ₯νκ² νλ©°, κ°κ°μ κ°λ μ μ€μΈκ³ λ¬Έμ λ₯Ό λͺ¨λΈλ§νλ λ° μ€μν μν μ νλ€.
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ λκ·λͺ¨ νλ‘μ νΈλ 볡μ‘ν μμ€ν μμ νΉν μ μ©νλ©°, μ΄λ₯Ό ν΅ν΄ κ°λ°μλ λ λμ μ½λ νμ§κ³Ό ν¨μ¨μ μΈ μννΈμ¨μ΄ κ°λ°μ λ¬μ±ν μ μλ€. OOPμ μ΄ν΄μ μ μ©μ νλ μννΈμ¨μ΄ κ°λ°μ νμμ μΈ λΆλΆμ΄λ©°, μ΄λ λ€μν νλ‘κ·Έλλ° μΈμ΄μ νλ«νΌμμ λ리 μ¬μ©λκ³ μλ€.
'λΉ κ΅¬λ© μ±μ°κΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Android] Android μ ν리μΌμ΄μ μ»΄νμΌ λ° ν¨ν€μ§ κ³Όμ (0) | 2024.08.02 |
---|---|
[Android] DEX (0) | 2024.08.02 |
[OOP] ν΄λμ€μ κ°μ²΄μ κ΄κ³ (0) | 2024.08.01 |
[Java] Static ν€μλ μ¬μ© μ μ£Όμν΄μΌ ν μ (0) | 2024.08.01 |
[Java] μ€ν ν± λ©μλμμ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ μΈμ€ν΄μ€μ λ©μλλ₯Ό νΈμΆνλ λ°©λ² (0) | 2024.08.01 |