JavaStudy

TIL JAVA #3-1

린예쑰 2023. 11. 30. 22:59

1. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° νŠΉμ§•

2. 클래슀 생성

3. 객체 생성 및 μ°Έμ‘°ν˜• λ³€μˆ˜


κ°μ²΄λŠ” 세상에 μ‘΄μž¬ν•˜λŠ” 물체λ₯Ό λœ»ν•¨. 식별이 κ°€λŠ₯ν•œ 것을 μ˜λ―Έν•œλ‹€.

κ°μ²΄λŠ” 속성과 ν–‰μœ„λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.(νŠΉμ§•&행동)

객체 쀑 μžλ™μ°¨λ₯Ό 예둜 λ“€μ–΄ 보면

- 속성: νšŒμ‚¬, λͺ¨λΈ, 속성, 가격

- ν–‰μœ„: 가속, 브레이크, 기어변속, μ‘°λͺ…, 경적

 

Javaμ—μ„œλŠ” μ΄λŸ¬ν•œ 속성과 ν–‰μœ„λ₯Ό ν•„λ“œ, λ©”μ„œλ“œλ‘œ μ •μ˜ν•˜μ—¬ κ΅¬ν˜„ν•  수 μžˆλ‹€.

속성: ν•„λ“œ / 행동: λ©”μ„œλ“œ

- 이처럼 ν˜„μ‹€ 세계에 μžˆλŠ” 객체λ₯Ό μ†Œν”„νŠΈμ›¨μ–΄μ˜ 객체둜 μ„€κ³„ν•˜λŠ” 것을 '객체 λͺ¨λΈλ§' 이라고 ν•œλ‹€. 

 

'κ°μ²΄κ°„μ˜ ν˜‘λ ₯'

μ‚¬λžŒμ΄λΌλŠ” 객체와 μžλ™μ°¨λΌλŠ” κ°μ²΄λŠ” μ„œλ‘œ ν–‰μœ„λ₯Ό 톡해 μƒν˜Έμž‘μš©ν•˜λ©° ν˜‘λ ₯ν•  수 μžˆλ‹€.

ex) μ‚¬λžŒμ΄ μžλ™μ°¨μ˜ νŽ˜λ‹¬μ„ 밟으면 μžλ™μ°¨λŠ” 속도λ₯Ό 올리며 μ•žμœΌλ‘œ μ΄λ™ν•œλ‹€. 

 

μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œμ˜ 객체 κ°„ μƒν˜Έμž‘μš©?

- ν–‰μœ„λ₯Ό μ •μ˜ν•˜λŠ” Java λ©”μ„œλ“œλ₯Ό 톡해 이루어진닀.

Car 객체 상단에 μ •μ˜λœ 뢀뢄이 ν•„λ“œ, ν•˜λ‹¨μ— μ •μ˜λœ 게 λ©”μ„œλ“œ

Person κ°μ²΄λŠ” λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  λ•Œ ( ) κ΄„ν˜Έ μ•ˆμ— 데이터λ₯Ό λ„£μ–΄ ν˜ΈμΆœν•  수 μžˆλŠ”λ° 이 ν•΄λ‹Ή 데이터λ₯Ό νŒŒλΌλ―Έν„° λ˜λŠ” λ§€κ°œκ°’ 이라고 ν•œλ‹€.

 

ν˜„μ‹€ μ„Έκ³„μ—μ„œ 인간이 λ§Žμ€ 관계λ₯Ό λ§Ίκ³  살아가듯이 μ†Œν”„νŠΈμ›¨μ–΄μ—λ„ κ°μ²΄κ°„μ˜ 관계가 μ‘΄μž¬ν•œλ‹€.

λͺ‡λͺ‡ 관계 μ€‘μ—μ„œλ„ κ°€μž₯ μ€‘μš”ν•œ 것은 "상속 관계"


1. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° νŠΉμ§•

  

1. μΊ‘μŠν™”: μ ‘κ·Όμ œμ–΄μžλ₯Ό μ‚¬μš©ν•΄ μΊ‘μŠν™”λ₯Ό ν•  수 μžˆλ‹€. (public, private)

- μ™ΈλΆ€ κ°μ²΄μ—μ„œ ν•„λ“œ, λ©”μ„œλ“œ μ˜€μ‚¬μš©ν•˜μ—¬ 객체가 λ³€ν™”ν•˜λŠ” 것을 막을 수 μžˆλ‹€.

 

2. 상속: overriding

- λΆ€λͺ¨ 객체가 κ°–κ³  μžˆλŠ” ν•„λ“œ, λ©”μ„œλ“œλ₯Ό μžμ‹ 객체가 λ¬Όλ €λ°›μ•„ μ‚¬μš©ν•  수 μžˆλ‹€. 

- μ½”λ“œμ˜ 쀑볡이 쀄어듀고 μž¬μ‚¬μš©μ„±μ΄ λŠ˜μ–΄λ‚œλ‹€.

 

3. λ‹€ν˜•μ„±: μž¬κ΅¬μ„±

- κΈ°μ‘΄ 클래슀λ₯Ό ν† λŒ€λ‘œ λ‹€λ₯Έ 객체λ₯Ό λ§Œλ“€ λ•Œ κΈ°μ‘΄ 클래슀의 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.

 

4. 좔상화: κ°μ²΄μ—μ„œ κ³΅ν†΅λœ 뢀뢄을 λͺ¨μ•„ μƒμœ„ κ°œλ…μœΌλ‘œ μƒˆλ‘­κ²Œ μ„ μ–Έ

- 곡톡적이고 μ€‘μš”ν•œ 것을 λͺ¨μ•„ 객체λ₯Ό λͺ¨λΈλ§ν•œλ‹€. (μ†Œν”„νŠΈμ›¨μ–΄ν™” μ‹œν‚¨λ‹€.)

- ν˜„μ‹€μ„Έκ³„μ˜ μžλ™μ°¨κ°€ κ³΅ν†΅μ μœΌλ‘œ κ°–κ³  μžˆλŠ” Ex) 가속, 브레이크, 속도 같은 것을 λͺ¨μ•„ μžλ™μ°¨ λΌλŠ” 객체λ₯Ό λͺ¨λΈλ§ ν•  수 μžˆλ‹€.

 

5. 객체와 클래슀

- 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” 섀계도가 ν•„μš”ν•˜λ‹€!

- 예λ₯Ό λ“€μ–΄ νšŒμ‚¬μ—μ„œ μžλ™μ°¨λ₯Ό λ§Œλ“ λ‹€κ³  ν•˜λ©΄ μžλ™μ°¨ 섀계도λ₯Ό λ°”νƒ•μœΌλ‘œ λ§Œλ“€ 것이닀. (μžλ™μ°¨λŠ” 싀체 μ„€κ³„λ„λŠ” μ‹€μ²΄λŠ” μ•„λ‹˜.)

 μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œ 이 섀계도에 ν•΄λ‹Ήν•˜λŠ” 뢀뢄이 λ°”λ‘œ ν΄λž˜μŠ€μ΄λ‹€. 이 클래슀λ₯Ό λ°”νƒ•μœΌλ‘œ λ§Œλ“€μ–΄μ§„ 객체λ₯Ό ν•΄λ‹Ή 클래슀의 μΈμŠ€ν„΄μŠ€

라고 λΆ€λ₯΄λ©° 이 과정을 μΈμŠ€ν„΄μŠ€ν™” 라고 ν•œλ‹€. 

- 예λ₯Ό λ“€μ–΄ μžλ™μ°¨ 클래슀λ₯Ό λ³Έλ”° λ§Œλ“  것을 μΈμŠ€ν„΄μŠ€ 라고 ν•œλ‹€. μΈμŠ€ν„΄μŠ€λŠ” μ—¬λŸ¬κ°œκ°€ 될 수 있고 이 μΈμŠ€ν„΄μŠ€ 묢음이 μžλ™μ°¨κ°μ²΄ 이닀!

 


2. 클래슀 μƒμ„±ν•˜κΈ°

- 클래슀 μ„ μ–Έ, ν•„λ“œ μ •μ˜, μƒμ„±μž μ •μ˜, λ©”μ„œλ“œ μ •μ˜

 

public class Car {
        
        String company; 
        String model;  
        String color;  
        double price; 
        double speed; 
        char gear;
        boolean lights; // -- ν•„λ“œ λΆ€λΆ„

        public Car() {} // κΈ°λ³Έ μƒμ„±μž

        double gasPedal(double kmh) {  //λ§€κ°œλ³€μˆ˜ kmh을 톡해 값을 전달받아 
        speed = kmh;				   //μžλ™μ°¨μ˜ 속성인 speed ν•„λ“œμ— ν•΄λ‹Ή κ°’ μ €μž₯! 
        return speed;
        }
        double brakePedal() {
        speed = 0;
        return speed;
        }
        char changeGear(char type) {
        gear = type;
        return gear;
        }
        boolean onOffLights() {
        lights = !lights;
        return lights;
        }
        void horn() {
        System.out.println("λΉ΅λΉ΅");	//--λ©”μ„œλ“œ λΆ€λΆ„
        }
    }

 

 


3. 객체 생성과 μ°Έμ‘°ν˜• λ³€μˆ˜

new Car(); //Car 클래슀 객체 생성

Car car1 = new Car();
Car car2 = new Car(); //Car 클래슀의 객체인 car1, 2 μΈμŠ€ν„΄μŠ€ 생성

 

- new μƒμ„±μžλ₯Ό 톡해 객체가 μƒμ„±λ˜λ©΄ μΈμŠ€ν„΄μŠ€μ˜ μ£Όμ†Œκ°€ λ°˜ν™˜λ˜κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή 클래슀의 μ°Έμ‘°ν˜• λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 받을 수 μžˆλ‹€.

- 클래슀λ₯Ό 톡해 λ§Œλ“  객체 λ˜ν•œ λ³€μˆ˜μ΄λ‹€.

 

3-1. 객체의 ν•„λ“œ

고유, μƒνƒœ, 객체 크게 μ„Έκ°€μ§€λ‘œ λΆ„λ₯˜ κ°€λŠ₯

- μƒνƒœ λ°μ΄ν„°μ˜ 경우 get, set λ“±μ˜ μƒνƒœλ₯Ό λ³€ν™”ν•΄μ£ΌλŠ” λ©”μ„œλ“œκ°€ ν•„μš”.

 

#ν΄λž˜μŠ€μ— μ •μ˜λλ‹€κ³  ν•΄μ„œ λ°”λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 것은 μ•„λ‹ˆλ‹€.

 

3-2. 객체의 λ©”μ„œλ“œ (ν•¨μˆ˜)

- μ™ΈλΆ€ μ ‘κ·Ό: λ„νŠΈ μ—°μ‚°μž μ‚¬μš©

- λ‚΄λΆ€ μ ‘κ·Ό: λ°”λ‘œ μ‚¬μš©

- λ©”μ„œλ“œ μ„ μ–Έμ‹œ return 값이 μ—†λ‹€λ©΄ void ν˜•νƒœλ‘œ μ„ μ–Έ

double breakPedal() {...} // double νƒ€μž… λ°˜ν™˜
void horn() {...} // λ°˜ν™˜ν•  κ°’ x.

 

- μ˜€λ²„λ‘œλ”©: λ˜‘κ°™μ€ λ©”μ„œλ“œ 이름을 κ°–μ§€λ§Œ λ§€κ°œλ³€μˆ˜ 값을 λ‹€λ₯΄κ²Œ μ£Όλ©΄μ„œ κΈ°λŠ₯을 달리 ν•˜λŠ” 것. ex) println( )

'JavaStudy' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

TIL JAVA #3-3  (0) 2023.12.01
TIL JAVA #3-2  (3) 2023.12.01
TIL JAVA #2-4  (1) 2023.10.20
TIL JAVA #2-3  (0) 2023.10.19
TIL JAVA #2-2  (3) 2023.10.19