πŸ’» Programming/Java

[Java] 객체 μ§€ν–₯의 νŠΉμ§• 4κ°€μ§€

soozkim 2023. 10. 19. 21:17
1번째 과제

객체 μ§€ν–₯의 νŠΉμ§• 4κ°€μ§€ κ°œλ…

1. μΊ‘μŠν™”

- 데이터가 μœ νš¨ν•œ 값을 μœ μ§€ν•˜λ„λ‘, λ˜λŠ” λΉ„λ°€λ²ˆν˜Έμ™€ 같은 데이터λ₯Ό μ™ΈλΆ€μ—μ„œ ν•¨λΆ€λ‘œ λ³€κ²½ν•˜μ§€ λͺ»ν•˜λ„둝 ν•˜κΈ° μœ„ν•΄μ„œ μ™ΈλΆ€λ‘œλΆ€ν„°μ˜ 접근을 μ œν•œν•˜λŠ” 것 

- 클래슀 λ‚΄μ—μ„œλ§Œ μ‚¬μš©λ˜λŠ”, λ‚΄λΆ€ μž‘μ—…μ„ μœ„ν•΄ μž„μ‹œλ‘œ μ‚¬μš©λ˜λŠ” λ©€λ²„λ³€μˆ˜λ‚˜ λΆ€λΆ„μž‘μ—…μ„ μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ λ©”μ„œλ“œ λ“±μ˜ 멀버듀을 클래슀 내뢀에 κ°μΆ”λŠ” 것

- private 둜 μ§€μ •ν•˜λ©΄, μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό λΆˆκ°€ν•¨

2. 상속

- 기쑴의 클래슀λ₯Ό μž¬μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ 클래슀λ₯Ό μž‘μ„±ν•˜λŠ” 것

- 상속을 톡해 클래슀λ₯Ό μž‘μ„±ν•˜λ©΄ 적은 μ–‘μ˜ μ½”λ“œλ‘œ μƒˆλ‘œμš΄ 클래슀 μž‘μ„± κ°€λŠ₯

- μ½”λ“œλ₯Ό κ³΅ν†΅μ μœΌλ‘œ 관리할 수 있기 λ•Œλ¬Έμ— μ½”λ“œμ˜ μΆ”κ°€ 및 변경이 μš©μ΄ν•˜λ‹€

- μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이고 μ½”λ“œμ˜ 쀑볡을 μ œκ±°ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ˜ 생산성과 μœ μ§€λ³΄μˆ˜μ— 크게 κΈ°μ—¬ν•œλ‹€

- 쑰상 클래슀 : μƒμ†ν•΄μ£ΌλŠ” 클래슀 / μžμ† 클래슀 : 상속 λ°›λŠ” 클래슀 (μ„œλ‘œ 상속 관계)

3. 좔상화

- ν΄λž˜μŠ€κ°„μ˜ 곡톡점을 μ°Ύμ•„λ‚΄μ„œ κ³΅ν†΅μ˜ 쑰상을 λ§Œλ“œλŠ” μž‘μ—…

- λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ΄λ‚˜ 데이터λ₯Ό λ‹¨μˆœν•˜κ²Œ λ§Œλ“œλŠ” 것

- μΈν„°νŽ˜μ΄μŠ€μ™€ μΆ”μƒλ©”μ„œλ“œ, μΆ”μƒν΄λž˜μŠ€λ‘œ κ΅¬ν˜„λœλ‹€

4. λ‹€ν˜•μ„±

- μ—¬λŸ¬ ν˜•νƒœλ‘œ λ³€ν•  수 μžˆλŠ” 것

- ν•œ νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ μ—¬λŸ¬ νƒ€μž…μ˜ 객체λ₯Ό μ°Έμ‘°ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것

- μ„œλ‘œ λ‹€λ₯Έ νƒ€μž…μ— μ†ν•˜λŠ” 객체듀이 같은 μ΄λ¦„μ˜ 멀버 ν•¨μˆ˜μ— μ‘λ‹΅ν•˜μ—¬μ„œ μ„œλ‘œ λ‹€λ₯Έ λ™μž‘μ„ λ³΄μ—¬μ£ΌλŠ” 것이 κ°€λŠ₯

 

λ‚΄κ°€ μƒκ°ν•˜λŠ” κ°€μž₯ μ€‘μš”ν•œ νŠΉμ§• : 상속
- 이유 : 상속을 λ°”νƒ•μœΌλ‘œ λ‹€ν˜•μ„±μ˜ ν˜•λ³€ν™˜κ³Ό μ½”λ“œ μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— κ°€μž₯ μ€‘μš”ν•œ νŠΉμ§•μ΄λΌκ³  μƒκ°ν•œλ‹€.

#2 μ˜ˆμ‹œ μ½”λ“œ

public class Car {
	int speed;
        int gear;
        public String color;
        private String model;

        public void speedUp(int increment) {
            speed += increment;
        }
}

class SportsCar extends Car {	//Car을 μƒμ†λ°›μŒ
	boolean turbo;
    
        public void setTurbo(boolean newValue) {
            turbo = newValue;
        }
}

 

Car κ³Ό SportsCar이 μœ„μ™€ κ°™λ‹€λ©΄,

 

1. μΊ‘μŠν™”

public class Test1 {
	public static void main(String[] args) {
    		Car c = new Car();
        	c.model = "XC40"; //λ³€μˆ˜ model의 μ ‘κ·Ό μ œμ–΄μžκ°€ privateμ΄λ―€λ‘œ μ ‘κ·Ό λΆˆκ°€
    }
}

2. 상속

public class Test2 {
	public static void main(String[] args) {
            SportsCar c = new SportsCar();

            //상속받은 Car의 ν•„λ“œμ™€ λ©”μ†Œλ“œ μ‚¬μš©
            c.color = "Red";
            c.speedUp(100);		

            c.setTurbo(true);
    }
}

3. 좔상화

- abstract λ¦¬ν„΄νƒ€μž… λ©”μ„œλ“œμ΄λ¦„();

abstract public class Vehicle {
	abstract public void setPrice(int price);
}

public class Car2 extends Vehicle {
	private int price;
    
    @Override
    public void setPrice(int price) {
    	this.price = price;
    }
}

public class Test3 {
	public static void main(String[] args) {
            Car2 c2 = new Car2();
            c2.setPrice(5000);
    }
}

4. λ‹€ν˜•μ„±

public class Test4 {
	public static void main(String[] args) {
            Car c = null;
            SportsCar sc = new SportsCar();
            SprotsCar sc2 = null;

            sc.setTurbo(true);
            car = sc;
            car.setTurbo(true); 	// 이 κ²½μš°λŠ” 호좜 λΆˆκ°€
            sc2 = (SportsCar)c;
            sc2.setTurbo(true);
    }
}
728x90