λͺ©μ°¨
- oop
- μμ/ μΆμ
- λ©μλ ꡬ쑰
- μμ±μ νΉμ§κ³Ό μν
- μ€λ²λΌμ΄λ©κ³Ό μ€λ²λ‘λ©
- μΈν°νμ΄μ€ ν€μλ
- μΆμν΄λμ€ μ μΈ λ°©λ²
- μ μΊμ€ν , λ€μ΄μΊμ€ν
- Arraylist λ©μλ(μΆκ°, μμ λ°©λ²)
- JDBC μ½λ μμ
oop
- κ°μ²΄μ§ν₯νλ‘κ·Έλλ° OOP(Object Oriented Programming)
- 4κ°μ§ νΉμ±(μΊ‘μν, μΆμν, λ€νμ±, μμμ±)
- #μΊ‘μμΆλ€
1) μΊ‘μν(Encapsulation)
- νλμ κ°μ²΄μ λν΄ κ·Έ κ°μ²΄κ° νΉμ ν λͺ©μ μ μν΄ νμν λ³μλ λ©μλλ₯Ό νλλ‘ λ¬Άλ κ²μ μλ―Έ
- μ 보μ μλν
- public , private(λ°μ΄ν° 보νΈ)
- 보νΈλ λ³μ μ κ·Ό λ² - getterλ setterλ±μ λ©μλλ₯Ό ν΅ν΄μλ§ κ°μ μ μΌλ‘ μ κ·Ό
2) μμμ±(Inheritance) = μ¬μ¬μ©
- κΈ°μ‘΄ μμν΄λμ€μ κ·Όκ±°νμ¬ μλ‘κ² ν΄λμ€μ νμλ₯Ό μ μν μ μκ² λμμ£Όλ κ°λ
- κΈ°μ‘΄ν΄λμ€μ κΈ°λ₯μ κ°μ Έμ μ¬μ¬μ©ν μμμΌλ©΄μλ λμμ μλ‘κ² λ§λ ν΄λμ€μ μλ‘μ΄ κΈ°λ₯μ μΆκ°
- λ¨μΌμμλ§ κ°λ₯
- λ€μ€μμμ΄ νμν μ μλ€κ³ μΈμ νμ¬ λλΉμ± μΌλ‘ μΈν°νμ΄μ€λ₯Ό λ€μ€μμ(ꡬν) ν μ μμ
(μΈν°νμ΄μ€μ μ‘΄μ¬μ΄μ κ° λ€μ€μμμ μ§μνκΈ° μν¨μ΄λ€ λΌκ³ μκ°νλ©΄ μλ¨)
3) μΆμν(Abstraction)
λ΄κ° μ΄ν΄ν λ°λ‘λ μ€μΈκ³ μ¦ μΈμμ μλ κ²μ λ³Έλ° ν΄λμ€λ₯Ό λ§λ€κ³ κ·Έ ν΄λμ€μ μνμ νλμ λΆμ¬ν κ°μ²΄λ₯Ό λ§λ λ€.
κ·Έλ¬λ λκ° μΈμμ λͺ¨λ κ²μ λ€ ν΄λμ€μ λ΄κ³ κ°μ²΄λ₯Ό λ§λ€ μ μμκΉ? κ·Έκ²μ λΆκ°λ₯νλ€. λ°λΌμ
μΆμμ μΌλ‘ μκ°ν΄ μΌλ¨ ν°νμ ν΄λμ€λ₯Ό ꡬννκ³ κ±°κΈ°μ μ΅μ μ΄λ¬ν 곡ν΅μ μΈ μμλ νμμ μΈ μμλ λ€μ΄κ°μΌλ©΄ νλ λ°λ¨μμ λ§λ κ²μ΄ μΆμν΄λμ€μ΄λ€.
μ΄ κ³Όμ μμ 곡ν΅μ μΈ μμλ νΉμ§μ μΆμΆνλ κ³Όμ μ΄ μΆμν μΈκ² κ°λ€.
μλ₯Ό λ€μλ©΄, λ²€μΈ ,μμ°λ,μλν,ν°μ½,λ°΄ν리 λ±λ± μ°λ¦¬κ° μκ°νλ μ¬λ¬μ’ λ₯μ μλμ°¨μ΄ μλ€. μ΄κ²μ λ€ ν΄λμ€ννκ³ λ³μμ λ©μλ λ±μ κ°λ³μ μΌλ‘ λ§λλ κ²μ 무λͺ¨ν μ§μ΄λ€. (κ±°λμ λ―Ένκ³ λ§νλ©΄ νμ₯μ±λλ¬Έμ μΆμνν νμκ° μλ€.)
λ°λΌμ λ°©κΈ λμ΄ν μλμ°¨λ€μ 곡ν΅μ μΈ μμλ νΉμ§μ μΆμΆνλ κ³Όμ μΈ μΆμνλ₯Ό κ±°μ³ μμλ₯Ό λμ§μ΄ λ΄λ©΄, λ°ν΄,λ°°κΈ°ν΅,νΈλ€,μ°¨λ¬Έ,μ 리창,λ± νμμ μΈ λΆνμ΄ μκ³ λ°ν΄λ κ΅΄λ¬κ°μΌνλ©°, νΈλ€μ μ’μ°λ‘ λμκ°μΌνκ³
μ°¨λ¬Έμ μ΄λ €μΌνλ€λ 곡ν΅μ μΈ νλ± μ¦ μ΄λ€ μ°¨λ νμμ μΌλ‘ νμν λ©μλκ° μΆμΆλλ€.
μ΄λ¬ν κ³Όμ μ΄ μΆμννλ κ³Όμ μ΄λ€. λμ€μ μ΄μΌκΈ°νκ² μ§λ§ μ΄λ κ² μΆμμ μΌλ‘ λμ§μ΄ λΈ κ°λ λ€μ ν° νμμ ν΄λμ€λ‘ λ§λ κ²μ΄ λ°λ‘ μΆμν΄λμ€μ΄λ€.
μΆμ² : https://limkydev.tistory.com/30
4) λ€νμ±(Polymorphism)
μμμ ν΅ν΄ κΈ°λ₯μ νμ₯νκ±°λ λ³κ²½νλ κ²μ κ°λ₯νκ² ν΄μ€λ€. μ΄λ₯Ό ν΅ν΄ μ½λμ μ¬μ¬μ©, μ½λκΈΈμ΄ κ°μκ° λμ΄ μ μ§λ³΄μκ° μ©μ΄νλλ‘ λμμ£Όλ κ°λ μ΄λ€.
μ€λ²λΌμ΄λ©/ μ€λ²λ‘λ©
λ€νμ± κ°λ μμ μ΄μ΄μ§λ κ°λ μ΄λ€.
μ€λ²λΌμ΄λ©
λΆλͺ¨ν΄λμ€μμ μμλ°μ μλΈν΄λμ€
μ¦ μμν΄λμ€μμ λΆλͺ¨ν΄λμ€
μ¦ μμν΄λμ€μμ λ§λ€μ΄μ§ λ©μλλ₯Ό μμ μ μ λ§λλ‘ λ€μ μ¬μ°½μ‘°ν΄μ μ¬μ©νλ κ²μ λ§νλ€.
class Parent {
void display() {
System.out.println("λΆλͺ¨ ν΄λμ€μ display() λ©μλμ
λλ€.");
}
}
class Child extends Parent {
void display() {
System.out.println("μμ ν΄λμ€μ display() λ©μλμ
λλ€.");
}
}
μ€λ²λ‘λ©
νλμ ν΄λμ€ μμμ κ°μμ΄λ¦μ λ©μλλ₯Ό μ¬μ©νμ§λ§ κ° λ©μλλ§λ€ λ€λ₯Έ μ©λλ‘ μ¬μ©λλ©° κ·Έ κ²°κ³Όλ¬Όλ λ€λ₯΄κ² ꡬνν μ μκ² λ§λλ κ°λ μΈλ° μ€λ²λ‘λ©μ΄ κ°λ₯νλ €λ©΄ λ©μλλΌλ¦¬ μ΄λ¦μ κ°μ§λ§ 맀κ°λ³μμ κ°―μλ λ°μ΄ν°νμ μ΄ λ€λ₯΄λ©΄ μ€λ²λ‘λ©μ΄ μ μ©λμ΄ λ©μλ μ΄λ¦μ΄ κ°μλ λ¬Έλ² μλ¬κ° λμ§μλλ€.
1. void display(int num1) // μ λ¬λ°μ num1μ κ·Έλλ‘ μΆλ ₯ν¨.
2. void display(int num1, int num2) // μ λ¬λ°μ λ μ μμ κ³±μ μΆλ ₯ν¨.
3. void display(int num1, double num2)
μμ±μ
μΈμ€ν΄μ€κ° μμ±λ λ νΈμΆλλ μΈμ€ν΄μ€μ μ΄κΈ°ν λ©μλ μ΄λ€.
μ£Όλ‘ μΈμ€ν΄μ€ λ³μμ μ΄κΈ°ν μμ μ μ£Όλ‘ μ¬μ©λλ©°, μΈμ€ν΄μ€ μμ±μ μνλμ΄μΌν μμ μ μν΄μλ μ¬μ©λλ€.
μμ±μλ₯Ό μμ±νλλ° μλμ κ°μ 2κ°μ§ 쑰건 μ λ°λμ λ§μ‘±ν΄μΌνλ€.
- μμ±μ μ΄λ¦μ ν΄λμ€ μ΄λ¦κ³Ό κ°μμΌνλ€.
- λ°ν κ°μ΄ μλ€.
μμ±μ νΉμ§
- μμ±μλ μ€λ²λ‘λ©μ΄ κ°λ₯νκΈ° λλ¬Έμ νλμ ν΄λμ€μ μ¬λ¬ κ°μ μμ±μκ° μ‘΄μ¬ν μ μλ€.
- μ°μ°μ newκ° μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμ±μκ° μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄ μλκΈ° λλ¬Έμ μ©μ΄ λλ¬Έμ νΌλν΄μλ μλλ€.
μμ±μ
- κΈ°λ³Έ μμ±μ(default constructor)
- 맀κ°λ³μκ° μλ μμ±μ
κΈ°λ³Έμμ±μ μμ 1 : κΈ°λ³Έ μμ±μμ μ 무
public class ConstructorTest {
public static void main(String[] args) {
Data1 data1 = new Data1();
Data2 data2 = new Data2(); // μ»΄νμΌ μ€λ₯ κΈ°λ³Έμμ±μκ° μκΈ° λλ¬Έμ
}
}
class Data1 {
int value;
}
class Data2 {
int value;
// Data2() {}; μ»΄νμΌ μ€λ₯λ₯Ό μμ νκΈ° μν΄μλ κΈ°λ³Έ μμ±μλ₯Ό μΆκ°ν΄μ€μΌ ν¨
Data2(int x) {
value = x;
}
}
Error:(6, 23) java: constructor Data2 in class com.doubles.standardofjava.ch06_oop1.part06_constructor.Data2 cannot be applied to given types;
required: int
found: no arguments
reason: actual and formal argument lists differ in length
Data2ν΄λμ€μ μΈμ€ν΄μ€ μμ±μμ Data2()λΌλ κΈ°λ³Έμμ±μλ₯Ό νΈμΆνμ§λ§ Data2ν΄λμ€μ κΈ°λ³Έμμ±μκ° μ μλμμ§ μμ μ»΄νμΌ μ€λ₯κ° λ°μνλ€. μ»΄νμΌλ¬κ° κΈ°λ³Έμμ±μλ₯Ό λμ μμ±ν΄μ€ λμλ ν΄λμ€μ μμ±μκ° νλλ μμ λμ΄λ€. Data2ν΄λμ€λ μ΄λ―Έ 맀κ°λ³μκ° μλ μμ±μκ° μ‘΄μ¬νκΈ° λλ¬Έμ μ»΄νμΌλ¬λ κΈ°λ³Έ μμ±μλ₯Ό μΆκ°μν€μ§ μλλ€
맀κ°λ³μκ° μλ μμ±μ :
μμ±μλ λ©μλ μ²λΌ 맀κ°λ³μλ₯Ό μ μΈνμ¬ νΈμΆμ κ°μ λ겨λ°μ μΈμ€ν΄μ€ μ΄κΈ°ν μμ μ μ¬μ©ν μ μλ€. μΈμ€ν΄μ€λ§λ€ κ°κΈ° λ€λ₯Έ κ°μΌλ‘ μ΄κΈ°ν λμ΄μΌν κ²½μ°κ° λ§κΈ° λλ¬Έμ 맀κ°λ³μλ₯Ό μ΄μ©ν μ΄κΈ°νλ λ§€μ° μ μ©νλ€.
public class CarTest {
public static void main(String[] args) {
Car car1 = new Car();
System.out.println("car1 :" + car1.color + "/" + car1.gearType + "/" + car1.door);
// μΈμ€ν΄μ€ μ΄κΈ°ν μμ
car1.color = "black";
car1.gearType = "auto";
car1.door = 4;
// μΈμ€ν΄μ€ μμ±, μ΄κΈ°ν μμ
λμ μν
Car car2 = new Car("white", "auto", 5);
System.out.println("car1 :" + car1.color + "/" + car1.gearType + "/" + car1.door);
System.out.println("car2 :" + car2.color + "/" + car2.gearType + "/" + car2.door);
}
}
class Car {
String color;
String gearType;
int door;
// κΈ°λ³Έμμ±μ
Car() {}
// 맀κ°λ³μκ° μλ μμ±μ
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
car1 :null/null/0
car1 :black/auto/4
car2 :white/auto/5
μμ±μμμ λ€λ₯Έ μμ±μ νΈμΆνκΈ°
κ°μ ν΄λμ€μ λ©€λ²λ€ κ°μ μλ‘ νΈμΆν μ μλ κ²μ²λΌ μμ±μ κ°μμλ μλ‘ νΈμΆμ΄ κ°λ₯νλ° μλμ κ°μ 쑰건μ λ§μ‘±ν΄μΌνλ€.
- μμ±μμ μ΄λ¦μΌλ‘ ν΄λμ€ μ΄λ¦ λμ thisλ₯Ό μ¬μ©νλ€.
- ν μμ±μμμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λλ λ°λμ 첫 μ€μμλ§ νΈμΆμ΄ κ°λ₯νλ€.
this : μΈμ€ν΄μ€ μμ μ κ°λ¦¬ν€λ μ°Έμ‘°λ³μ, μΈμ€ν΄μ€μ μ£Όμκ° μ μ₯λμ΄ μλ€.
this(), this(맀κ°λ³μ) : μμ±μ, κ°μ ν΄λμ€μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ μ¬μ©νλ€.
public class CarTest2 {
public static void main(String[] args) {
Car2 carOne = new Car2();
Car2 carTwo = new Car2("blue");
System.out.println("carOne :" + carOne.color + "/" + carOne.gearType + "/" + carOne.door);
System.out.println("carTwo :" + carTwo.color + "/" + carTwo.gearType + "/" + carTwo.door);
}
}
class Car2 {
String color;
String gearType;
int door;
Car2() {
this("white", "auto", 4); // μμ±μ νΈμΆμμλ λ°λμ μμ±μμ 첫λ²μ§Έ λΌμΈμ μμ±
}
Car2(String color) {
this(color, "auto", 4); // μμ±μ νΈμΆμμλ λ°λμ μμ±μμ 첫λ²μ§Έ λΌμΈμ μμ±
}
Car2(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
carOne :white/auto/4
carTwo :blue/auto/4
μμ±μλ₯Ό μ΄μ©ν μΈμ€ν΄μ€μ 볡μ¬
νμ¬ μ¬μ©νκ³ μλ μΈμ€ν΄μ€μ κ°μ μνλ₯Ό κ°λ μΈμ€ν΄μ€λ₯Ό νλ λ λ§λ€κ³ μ ν λ μμ±μλ₯Ό μ΄μ©ν μ μλ€. λ μΈμ€ν΄μ€κ° κ°μ μνλ₯Ό κ°λλ€λ κ²μ μΈμ€ν΄μ€ λ³μκ° λμΌν κ°μ κ°μ§κ³ μλ€λ κ²μ μλ―Ένλ€. νλμ ν΄λμ€λ‘λΆν° μμ±λ μΈμ€ν΄μ€μ λ©μλ, ν΄λμ€ λ³μλ μλ‘ λμΌνκΈ° λλ¬Έμ μΈμ€ν΄μ€μ μ°¨μ΄λ μΈμ€ν΄μ€λ§λ€ κ°κΈ° λ€λ₯Έ κ°μ κ°μ§ μ μλ κ²μ μΈμ€ν΄μ€ λ³μ λΏμ΄λ€.
public class CarTest3 {
public static void main(String[] args) {
Car3 carOne = new Car3();
Car3 carTwo = new Car3(carOne);
System.out.println("carOne :" + carOne.color + "/" + carOne.gearType + "/" + carOne.door);
System.out.println("carTwo :" + carTwo.color + "/" + carTwo.gearType + "/" + carTwo.door);
carOne.door = 6;
System.out.println("carOne.door = 6; μνν");
System.out.println("carOne :" + carOne.color + "/" + carOne.gearType + "/" + carOne.door);
System.out.println("carTwo :" + carTwo.color + "/" + carTwo.gearType + "/" + carTwo.door);
}
}
class Car3 {
String color;
String gearType;
int door;
Car3() {
this("white", "auto", 4);
}
Car3(Car3 car3) {
color = car3.color;
gearType = car3.gearType;
door = car3.door;
}
Car3(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
μΊμ€ν μ΄λ?
μΊμ€ν (casting)μ΄λ νμ μ λ³ννλ κ²μ λ§νλ©° νλ³νμ΄λΌκ³ λ νλ€.
μλ°μ μμ κ΄κ³μ μλ λΆλͺ¨μ μμ ν΄λμ€ κ°μλ μλ‘ κ°μ νλ³νμ΄ κ°λ₯νλ€.
μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ νμ μΌλ‘ μΊμ€ν λλ μ μΊμ€ν κ³Ό λ°λλ‘ λΆλͺ¨ ν΄λμ€κ° μμ ν΄λμ€μ νμ μΌλ‘ μΊμ€ν λλ λ€μ΄μΊμ€ν μ λν΄μ μμλ³Έλ€. μμνκΈ°μ μμ λΆλͺ¨ ν΄λμ€μΈ μμ κ΄κ³μ μμ ν΄λμ€λ₯Ό μνΌ ν΄λμ€, κ·Έλ¦¬κ³ μμ ν΄λμ€μΈ νμ ν΄λμ€λ₯Ό μλΈ ν΄λμ€λΌκ³ μ μνλ€
μ μΊμ€ν
μλ°μμ μλΈ ν΄λμ€λ μνΌ ν΄λμ€μ λͺ¨λ νΉμ±μ μμλ°λλ€. κ·Έλ κΈ° λλ¬Έμ μλΈ ν΄λμ€λ μνΌ ν΄λμ€λ‘ μ·¨κΈλ μ μλ€. μ¬κΈ°μ μ μΊμ€ν (Upcasting)μ΄λ μλΈ ν΄λμ€μ κ°μ²΄κ° μνΌ ν΄λμ€ νμ μΌλ‘ νλ³νλλ κ²μ λ§νλ€.
μ¦, μνΌ ν΄λμ€ λ νΌλ°μ€ λ³μκ° μλΈ ν΄λμ€λ‘ κ°μ²΄νλ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν¬ μ μκ² λλ€. λ μ½κ² νμ΄μ μμλ₯Ό λ€μ΄λ³΄λ©΄ μ¬λμ μλ¬Όμ΄λ€λΌκ³ μκ°νλ©΄ λλ€. μ¬κΈ°μ μ¬λμ μλΈ ν΄λμ€μ΄κ³ μλ¬Όμ μνΌ ν΄λμ€λ€.
(continue...)