πŸ“š μ°Έκ³ ν•œ μ±…

 

: 좜처 예슀24 ν™ˆνŽ˜μ΄μ§€

 

 

 

- 기본적인 κ°œλ…μ„ μ •λ¦¬ν•˜κ³  μΆ”κ°€μ μœΌλ‘œ κΆκΈˆν•œ 것듀을 μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€ -

 

 

πŸ₯ πŸ₯ πŸ₯

 


 

βœ”οΈ   final μ œμ–΄μž_ 379p

 

β€’ final λ³€μˆ˜

ν•œ 번 λŒ€μž…λœ 값을 μˆ˜μ •ν•  수 μ—†μœΌλ©°, ν•œ 번 λŒ€μž…λœ 값이 μ΅œμ’… 값이 λœλ‹€.

class A {
    int a;
    final int b;
    
    A() {
        a = 3;
        b = 5;
    }
}

class B {
    int a = 3;
    final int b = 5;
    
    B() {
    }
}
클래슀 AλŠ” μ„ μ–Έκ³Ό κ°’μ˜ λŒ€μž…μ„ λΆ„λ¦¬ν•˜μ˜€λ‹€. 클래슀 BλŠ” μ„ μ–Έκ³Ό 값을 λ™μ‹œμ— λŒ€μž…ν–ˆλ‹€. μ΄λ•Œ final ν•„λ“œλ₯Ό κ°’κ³Ό λ™μ‹œμ— μ„ μ–Έν•˜μ§€ μ•Šμ•˜μ„ 경우 κ°’μ˜ μ΄ˆκΈ°ν™”λŠ” λ°˜λ“œμ‹œ μƒμ„±μžμ—μ„œ μ΄λ€„μ Έμ•Όν•œλ‹€. final ν•„λ“œλŠ” 일반 ν•„λ“œμ™€ λ‹€λ₯΄κ²Œ, κ°•μ œ μ΄ˆκΈ°ν™”λ˜μ§€ μ•ŠλŠ”λ‹€. κ·Έλž˜μ„œ 값이 λŒ€μž…ν•œ ν›„ 값을 μž…λ ₯ν•˜λŠ” ν–‰μœ„ μžμ²΄λŠ” ν•  수 μ—†λ‹€.

 

 

Q. μ™œ μƒμ„±μžμ—μ„œ μ΄ˆκΈ°ν™”λ₯Ό ν•˜λ„λ‘ ν• κΉŒ?

A.
κ·Έ μ΄μœ λŠ” κ°μ²΄λ§ˆλ‹€ λ‹€λ₯Έ 값을 κ°€μ§ˆ 수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•¨μ΄λ‹€.
class Car {
    final String model;

    Car(String model) {
        this.model = model;
    }

    void printModel() {
        System.out.println("μ°¨ λͺ¨λΈ 이름은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? : " + model);
    }
}

public class Main {
    public static void main(String[] args) {
        Car car1 = new Car("Tesla");
        Car car2 = new Car("BMW");

        car1.printModel(); // Car model: Tesla
        car2.printModel(); // Car model: BMW
    }
}

λ§Œμ•½ μ„ μ–Έκ³Ό 값을 같이 λŒ€μž…ν•œλ‹€λ©΄ 각 κ°μ²΄λ§ˆλ‹€ 같은 값을 κ°€μ Έμ•Όλ§Œ ν•  것이닀. 상황에 따라 κ°μ²΄λ§ˆλ‹€ λ‹€λ₯Έ 값을 κ°€μ§€λŠ” 것이 ν•„μš”ν•  수 μžˆλ‹€. 그렇기에 μƒμ„±μžλ₯Ό 톡해 final λ³€μˆ˜ 값을 λŒ€μž…ν•œλ‹€λ©΄ μœ„μ˜ μ½”λ“œμ™€ 같이 κ°μ²΄λ§ˆλ‹€ λ‹€λ₯Έ 값을 κ°€μ§€κ²Œ ν•  수 μžˆλ‹€.

 

 

 

 

β€’ μƒμˆ˜ μ˜μ—­

νž™ μ˜μ—­μ˜ Permanent area(κ³ μ • μ˜μ—­)에 μƒμ„±λ˜μ–΄ Java ν”„λ‘œμ„ΈμŠ€μ˜ μ’…λ£ŒκΉŒμ§€ 계속 μœ μ§€λ˜λŠ” λ©”λͺ¨λ¦¬ μ˜μ—­

class A{
    int a;
    final int b;
    
    A() {
        a = 3;
        b = 5;
    }
}
ν•„λ“œλŠ” λ©€λ²„μ΄λ―€λ‘œ final ν•„λ“œμ΄λ“ , μ•„λ‹ˆλ“  객체 속에 ν¬ν•¨λœλ‹€. ν•˜μ§€λ§Œ 객체가 λ§Œλ“€μ–΄μ§ˆ λ•Œ final둜 μ„ μ–Έλœ ν•„λ“œ 값은 μƒμˆ˜ μ˜μ—­μ— 1κ°œκ°€ λ³΅μ‚¬λœλ‹€. final둜 μ„ μ–Έλœ λͺ¨λ“  ν•„λ“œ 값은 μƒμˆ˜ μ˜μ—­μ— λ³΅μ‚¬λ˜λ―€λ‘œ 첫 번째 λ©”λͺ¨λ¦¬ μ˜μ—­μ„ μƒμˆ˜ μ˜μ—­μ΄λΌκ³  λΆ€λ₯Έλ‹€. μ΄λ•Œ κ°’μ˜ λ³΅μ‚¬λŠ” μ„ μ–Έν•œ ν›„ 졜초둜 값이 μ΄ˆκΈ°ν™”λ  λ•Œ λ”± ν•œ 번 μΌμ–΄λ‚œλ‹€.

final이 λΆ™μ§€ μ•Šμ€ μŠ€νƒ λ©”λͺ¨λ¦¬μ˜ λ³€μˆ«κ°’μ€ μžμ‹ μ΄ λ§Œλ“€μ–΄μ§„ λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ λ©”λͺ¨λ¦¬μ— 사라진닀. ν•˜μ§€λ§Œ 이벀트λ₯Ό μ²˜λ¦¬ν•  λŒ€ λ©”λͺ¨λ¦¬μ—μ„œ 사라진 κ·Έ λ³€μˆ˜λ₯Ό λ‹€μ‹œ μ‚¬μš©ν•΄μ•Όν•˜λŠ” κ²½μš°κ°€ μžˆλŠ”λ°, 이런 경우λ₯Ό μœ„ν•΄μ„œ 볡사본을 ν•˜λ‚˜ λ§Œλ“€μ–΄ 놓고 원본이 μ‚­μ œλ˜λ”λΌλ„ κ·Έ 값을 ν™œμš©ν•  수 있게 λ§Œλ“€μ—ˆλ‹€.

 

 

 

- μƒμˆ˜ν’€ μ˜μ—­

 

λ©”λͺ¨λ¦¬ μƒμˆ˜ν’€μ˜μ—­ μ΄λž€?

8. λ©”λͺ¨λ¦¬ μƒμˆ˜ν’€μ˜μ—­? λ©”λͺ¨λ¦¬ ꡬ쑰 개인적으둜 컴퓨터 곡뢀λ₯Ό ν•˜λ©΄μ„œ κ°€μž₯ μ€‘μš”ν•˜κ²Œ μƒκ°ν•˜λŠ” 뢀뢄은 λ°”λ‘œ λ©”λͺ¨λ¦¬μ΄λ‹€. 데이터 μ˜μ—­(Data Area)데이터 μ˜μ—­μ€ μ „μ—­ λ³€μˆ˜μ™€ static λ³€μˆ˜κ°€ ν• λ‹Ήλ˜λŠ”

coderbycode.tistory.com

 

 

 

β€’ final λ©”μ„œλ“œ

μ΅œμ’… λ©”μ„œλ“œλΌκ³  뢈리며 λ©”μ„œλ“œ κΈ°λŠ₯ 변경이 이뀄지지 μ•ŠλŠ”λ‹€. (μ˜€λ²„λ¦¬μ΄λ”© X)

class A {
    void abc() {
    }
    
    final void bcd() {
    }
}

 

 

β€’ final 클래슀

μ΅œμ’… 클래슀라고 뢈리며, 더 이상 μžμ‹ ν΄λž˜μŠ€κ°€ μ—†μœΌλ©° 상속 μžμ²΄κ°€ λΆˆκ°€ν•˜λ‹€.

final class A{

}
final ν΄λž˜μŠ€μ™€ λΉ„μŠ·ν•œ 것이 String ν΄λž˜μŠ€κ°€ μžˆλ‹€. String ν΄λž˜μŠ€λ„ final 클래슀둜 μ •μ˜λ˜μ–΄ μžˆμ–΄μ„œ λ§ˆμ°¬κ°€μ§€λ‘œ String 클래슀λ₯Ό 상속받아 μžμ‹ 클래슀둜 μ΄μš©ν•  수 μ—†λ‹€.

 

 

Q. Stringκ³Ό final의 차이점은?

A.
String은 λΆˆλ³€ 객체둜 ν•œ 번 μƒμ„±λœ λ¬ΈμžλŠ” λ³€κ²½ν•  수 μ—†λ‹€. κ·Έ 점은 finalκ³Ό κ°™μ§€λ§Œ, String은 μ°Έμ‘°(μ£Όμ†Œ)λ₯Ό λ³€κ²½ν•  수 μžˆλ‹€. 
public class Test {
    public static void main(String[] args) {
        String str = "Hello";
        str = "World";
        System.out.println(str);
    }
}


"Hello"의 값이 "World"둜 λ³€κ²½λ˜λŠ”κ²Œ μ•„λ‹ˆλ‹€. str이 μƒˆλ‘œμš΄ μ°Έμ‘°λ₯Ό λ§Œλ“€μ–΄ 거기에 "World" 값을 μ €μž₯ν•˜λŠ” 것이닀. 즉, String은 μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ ν• λ‹Ήν•  순 μžˆλ‹€.

 

 

 

- string

 

String classκ°€ final인 이유, String의 λΆˆλ³€μ„± (Immutable)

Java의 final에 λŒ€ν•΄ κ³΅λΆ€ν•˜λ©΄μ„œ String classκ°€ λŒ€ν‘œμ μΈ final classλΌλŠ” 것을 μ•Œκ²Œ λ˜μ—ˆκ³ , String classκ°€ final으둜 μ •μ˜λœ μ΄μœ κ°€ κΆκΈˆν•˜μ—¬ μ°Ύμ•„λ³΄κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. Java String String str1 = new String("Hello"); // new

wildeveloperetrain.tistory.com

 

 

 


 

 

 

βœ”οΈ   abstract μ œμ–΄μž_ 387p

 

 

β€’ μΆ”상 λ©”μ„œλ“œ

μ€‘κ΄„ν˜Έκ°€ μ—†μœΌλ©°, 무슨 κΈ°λŠ₯을 μ •μ˜ν• μ§€ μ •ν•΄μ§€μ§€ μ•Šμ€ λ―Έμ™„μ„± λ©”μ„œλ“œλ‹€.

abstract class Animal {
    abstract void cry() {}
}

class Cat extends Animal {
    void cry() {
        System.out.println("μ•Όμ˜Ή");
    }
}

class Dog extends Animal {
    void cry() {
        System.out.println("μ™ˆμ™ˆ");
    }
}
Animal animal1 = new Cat();
Animal animal2 = new Dog();

animal1.cry();
animal2.cry();
좔상 λ©”μ„œλ“œλ₯Ό 1개 이상 ν¬ν•¨ν•˜κ³  μžˆλŠ” ν΄λž˜μŠ€λŠ” λ°˜λ“œμ‹œ 좔상 클래슀둜 μ •μ˜ν•΄μ•Όν•œλ‹€. abstract μ œμ–΄μžμ˜ μž₯점은 문법 였λ₯˜κ°€ λ°œμƒν–ˆμŒμ„ μ•Œλ €μ£ΌλŠ” 것이닀. 예λ₯Ό λ“€μ–΄ Cat ν΄λž˜μŠ€μ™€ Dog ν΄λž˜μŠ€μ— cry λ©”μ„œλ“œκ°€ μ•„λ‹Œ cRy λ©”μ„œλ“œκ°€ μ •μ˜λ˜μ—ˆλ‹€κ³  κ°€μ •ν•˜μž. 일반클래슀둜 μ •μ˜ν–ˆμ„ 경우 좜λ ₯이 λ˜μ§€ μ•Šμ„ 뿐 별닀λ₯Έ 경고문이 λœ¨μ§€ μ•ŠλŠ”λ‹€. ν•˜μ§€λ§Œ abstract μ œμ–΄μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μ½”λ“œλ₯Ό μž‘μ„±ν•  경우 μ΄λ ‡κ²Œ μ •μ˜λœ λ©”μ„œλ“œμ™€ λ‹€λ₯Έ λ©”μ„œλ“œκ°€ μ‹€ν–‰λœλ‹€λ©΄ 였λ₯˜κ°€ λ°œμƒν•  것이닀.

μ‹€μ œ μ—…λ¬΄μ—μ„œλŠ” λ‚΄κ°€ μž‘μ„±ν•œ μ½”λ“œλ₯Ό κ°€μ§€κ³  λ‹€λ₯Έ μ‚¬λžŒμ΄ μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ μžˆμ„ 것이닀. μ–΄λ–€ 였λ₯˜κ°€ λ‚˜νƒ€λ‚˜μ§€ μ•Šκ³  μ—‰λš±ν•œ κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€λ©΄ λ‹€λ₯Έ κ°œλ°œμžλŠ” μ–΄λ””μ„œ 였λ₯˜κ°€ λ‚¬λŠ”μ§€ μ°Ύμ•„μ•Όν•  것이닀. ν•˜μ§€λ§Œ abstractλŠ” 이λ₯Ό μƒμ†ν•œ λͺ¨λ“  μžμ‹ 클래슀 λ‚΄λΆ€μ—λŠ” 항상 cry( )λ©”μ„œλ“œκ°€ μžˆμ–΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— 였λ₯˜λ₯Ό 보고 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμ„ 것이닀.

 

 

 

+ Recent posts