π JAVA

νλ³ν(μΊμ€ν , Casting) - μ μΊμ€ν (Up-Casting), λ€μ΄μΊμ€ν (Down-Casting)
1. νλ³ν(μΊμ€ν ) κ°λ π¦ νλ³ν(μΊμ€ν )μ΄λ λ³μ λλ μμμ νμ μ λ€λ₯Έ νμ μΌλ‘ λ³ννλ κ²μ λ§νλ€. κΈ°λ³Έν(Primitive Type)μμλ booleanμ μ μΈν λλ¨Έμ§ νμ λ€μ μλ‘ νλ³νμ΄ κ°λ₯νλ€. μ°Έμ‘°ν(Reference Type)μμλ μλ‘ μμκ΄κ³κ° μλ ν΄λμ€ μ¬μ΄μμλ§ νλ³νμ΄ κ°λ₯νλ€. μμνμ μ μ°Έμ‘°λ³μλ₯Ό μ‘°μνμ μ μ°Έμ‘°λ³μλ‘, μ‘°μνμ μ μ°Έμ‘°λ³μλ₯Ό μμνμ μ μ°Έμ‘°λ³μλ‘ νλ³νμ νλ κ²μ΄λ€. μ΄ κΈμμλ κΈ°λ³Ένμ νλ³ν보λ€λ μ°Έμ‘°νμ νλ³νμ μ΄μ μ λ§μΆλλ‘ νλ€. μ°Έμ‘°ν μΊμ€ν μ 2κ°μ§λ‘ λλ μ μλ€. 1. μ μΊμ€ν (Up-Casting) μμνμ μ μ°Έμ‘°λ³μλ₯Ό μ‘°μνμ μ μ°Έμ‘°λ³μλ‘ λ³ννλ κ² μ μΊμ€ν μ νλ©΄ μμλ°μ μλΈ ν΄λμ€μ μκ΄μμ΄ νλμ μΈμ€ν΄μ€λ‘ λ¬Άμ΄μ κ΄..

λΉκ²μ¬ κ²½κ³ λ₯Ό μ κ±°νλΌ - [5μ₯. μ λ€λ¦(μμ΄ν 27)]
1. λΉκ²μ¬ κ²½κ³ κ°λ π¦ 'λΉκ²μ¬(unchecked) κ²½κ³ 'λ μ»΄νμΌλ¬κ° νμ μμ μ±μ νμΈνλλ° νμν μ λ³΄κ° μΆ©λΆνμ§ μμ λ λ°μμν€λ κ²½κ³ μ΄λ€. λΉκ²μ¬ κ²½κ³ μ μμ μ€μ νλλ‘ λ€μκ³Ό κ°μ΄ λ‘ νμ μ μ¬μ©νλ κ²½μ°λ₯Ό λ€ μ μλ€. public static void main(String[] args) { // λΉκ²μ¬ κ²½κ³ λ°μ // Raw use of parameterized class 'Set' Set names = new HashSet(); // λΉκ²μ¬ κ²½κ³ λ°μ // Raw use of parameterized class 'HashSet' Set strings = new HashSet(); } 2. λΉκ²μ¬ κ²½κ³ λ₯Ό μ κ±°ν΄μΌ νλ μ΄μ π¦ μ΄λ² μμ΄ν μμλ 'λΉκ²μ¬ κ²½κ³ λ₯Ό μ κ±°νλΌ'λΌκ³ λ§νκ³ ..

λ‘ νμ μ μ¬μ©νμ§ λ§λΌ - [5μ₯. μ λ€λ¦(μμ΄ν 26)]
μ΄λ² μ₯(5μ₯)λΆν°λ μ λ€λ¦μ λ€λ£¬λ€. νΉμλ μ λ€λ¦μ λν κΈ°λ³Έ κ°λ μ΄ νμνλ€λ©΄ μ΄μ κΈμ λ¨Όμ λ³΄κ³ μ€λλ‘ νμ. 1. λ‘ νμ (Raw Type) κ°λ π½ λ‘ νμ μ΄λ μ λ€λ¦ νμ μμ νμ 맀κ°λ³μλ₯Ό μ ν μ¬μ©νμ§ μμ λλ₯Ό λ§νλ€. μλ₯Ό λ€μ΄ Listμ λ‘ νμ μ Listλ€. 2. λ‘ νμ μ μ¬μ©νλ©΄ μ λλ μ΄μ πΎ μ λ€λ¦μ΄ μ겨주λ μμ μ±κ³Ό ννλ ₯μ κ³ λ €ν λ λ‘ νμ μ μ λλ‘ μ¨μλ μ λλ€. λ‘ νμ μ μ¬μ©νλ μ½λ(= μ λ€λ¦μ μ¬μ©νμ§ μλ μ½λ)μ λ‘ νμ μ μ¬μ©νμ§ μλ μ½λ(= μ λ€λ¦μ μ¬μ©νλ μ½λ)λ₯Ό λΉκ΅ν΄ 보μ. π 1. λ‘ νμ μ μ¬μ©νλ κ²½μ° κΈ°λ³Έμ μΈ λμμ numbersμ μ«μλ₯Ό λ£κ³ λ°λ³΅λ¬Έμ ν΅ν΄ λ€μ΄κ° μ«μλ₯Ό νμΈνλ €κ³ νλ μ½λλ€. μ«μκ° λ€μ΄κ°μΌ νμ§λ§ λ¬Έμμ΄μ΄ ..

μ λ€λ¦(Generics) - κΈ°λ³Έ κ°λ
JDK 1.5λΆν° λμ λ μ λ€λ¦(Generics)μ λν΄μ μμ보μ. 'μ λ€λ¦(Generic)μ μ¬μ©νλ©΄ λ€μν νμ μ μ¬μ©ν μ μλ€.' μ λλ‘λ§ μκ³ μμλλ° μ λλ‘ κ³΅λΆνλ €κ³ λ³΄λκΉ μκ°λ³΄λ€ μμ΄ λ§λ€. μ« λ§μ΄ λ§λ€... κ·Έλμ μ΄λ² κΈμμλ μ λ€λ¦μ κΈ°λ² κ°λ μ λν΄μ μμλ³΄κ³ λ€μ κΈλ€μ ν΅ν΄ λ ꡬ체μ μΌλ‘ μμ보λ κ²μΌλ‘ νμ. (μ΄νν°λΈ μλ° 5μ₯μ μ λ€λ¦(μμ΄ν 26 ~ μμ΄ν 33) λ΄μ©κ³Ό μμΌλμΉ΄λ λ±μ λ΄μ©μ μΆκ°μ μΌλ‘ λ€λ£° μμ μ΄λ€.) (μ΄νν°λΈ μλ° 5μ₯ μ λ€λ¦ ννΈλ₯Ό μ½μΌλ €λλ° μ΄ν΄κ° μ λμ§ μμμ μ λ€λ¦μ κΈ°λ³ΈλΆν° λΈλ‘κΉ νκ³ μλ μ€μ΄λ€...π ) 1. μ λ€λ¦(Generic) κ°λ 𧱠μ°λ¦¬λ μ λ€λ¦(Generics)μ κ·Έ μ΄λ ν κ°λ λ³΄λ€ μμ£Ό μ¬μ©νλ€. public stati..

λνΌ ν΄λμ€ (Wrapper Class)
1. κ°λ πΆβοΈ μΌλ°μ μΌλ‘ κ°μ²΄μ§ν₯ κ°λ μμ λͺ¨λ κ²μ κ°μ²΄λ‘ λ€λ£¨μ΄μ ΈμΌ νλ€. νμ§λ§ μλ°μμ 8κ°μ κΈ°λ³Έν(boolean, char, byte, short, int, long, float, double)μ κ°μ²΄λ‘ λ€λ£¨μ΄μ§μ§ μλλ€. μλ°κ° μμ ν κ°μ²΄ μ§ν₯ μΈμ΄κ° μλλΌλ μ΄μΌκΈ°λ₯Ό λ£μ§λ§, λ³΄λ€ λμ μ±λ₯μ μ»μ μ μλ€λ μ₯μ μ΄ μλ€. νλ‘κ·Έλλ°μ νλ€ λ³΄λ©΄ κΈ°λ³Έν(Primitive Type) λ³μλ μ΄μ© μ μμ΄ κ°μ²΄λ‘ λ€λ€μΌ νλ κ²½μ°κ° μλ€. μλ₯Ό λ€λ©΄, 맀κ°λ³μλ‘ κ°μ²΄λ₯Ό μꡬν λ, κΈ°λ³Έν κ°μ΄ μλ κ°μ²΄λ‘ μ μ₯ν΄μΌ ν λ, κ°μ²΄ κ°μ λΉκ΅κ° νμν λ λ±λ±μ κ²½μ°μλ κΈ°λ³Έν κ°λ€μ κ°μ²΄λ‘ λ³ννμ¬ μμ μ μνν΄μΌ νλ€. μ΄λ΄ λ λνΌ ν΄λμ€λ₯Ό μ¬μ©νμ¬ κ°κ°μ νμ μ ν΄λΉνλ λ°μ΄ν°λ₯Ό μΈ..

ν±λ 벨 ν΄λμ€λ ν νμΌμ νλλ§ λ΄μΌλΌ - [4μ₯. ν΄λμ€μ μΈν°νμ΄μ€(μμ΄ν 25)]
μμ€ νμΌμ νλμ ν±λ 벨 ν΄λμ€(ν±λ 벨 ν΄λμ€λ νμΌμ μ μλμ΄ μλ κ°μ₯ λ°κΉ₯μ μλ ν΄λμ€λ₯Ό λ§νλ€)λ₯Ό μ¬λ¬ κ° μ μΈνλλΌλ μ»΄νμΌν λλ λ¬Έμ κ° μλ€. μ ν¨ν λ¬Έλ²μ΄λΌλ κ²μ΄λ€. νμ§λ§ μ΄κ²μ μλ¬΄λ° λμ΄ μμλΏλλ¬ μ¬κ°ν μνμ κ°μν΄μΌ νλ€. κ·Έ μ΄μ λ ν μμ€ νμΌμ ν±λ 벨 ν΄λμ€λ₯Ό μ¬λ¬ κ° μ μΈνλ©΄ μ»΄νμΌ μμμ λ°λΌ κ²°κ³Όκ° λ¬λΌμ§ μ μκΈ° λλ¬Έμ΄λ€. λ¬Έμ μν©μ λν μμλ₯Ό μ΄ν΄λ³΄κ³ , ν΄κ²°μ± μ μμ보λλ‘ νμ. 1. λ¬Έμ μ π μ§κΈ°(Utensil)μ λμ νΈ(Dessert) ν΄λμ€κ° Utensil.javaλΌλ ν νμΌμ μ μλμ΄ μλ€κ³ νμ. // Utensil.java class Utensil { static final String NAME = "pan"; } class Dessert {..

λ©€λ² ν΄λμ€λ λλλ‘ staticμΌλ‘ λ§λ€λΌ - [4μ₯. ν΄λμ€μ μΈν°νμ΄μ€(μμ΄ν 24)]
μ€μ²© ν΄λμ€(nested class)λ λ€λ₯Έ ν΄λμ€ μμ μ μλ ν΄λμ€λ₯Ό λ§νλ€. μ€μ²© ν΄λμ€λ μμ μ κ°μΌ λ°κΉ₯ ν΄λμ€μμλ§ μ°μ¬μΌ νλ©°, κ·Έ μΈμ μ°μμκ° μλ€λ©΄ ν±λ 벨 ν΄λμ€λ‘ λ§λ€μ΄μΌ νλ€. μ€μ²© ν΄λμ€μ μ’ λ₯λ μλμ 4κ°μ§κ° μλ€. μ μ λ©€λ² ν΄λμ€ (λΉμ μ ) λ©€λ² ν΄λμ€ μ΅λͺ ν΄λμ€ μ§μ ν΄λμ€ 'μ μ λ©€λ² ν΄λμ€'λ₯Ό μ μΈνκ³ λ λͺ¨λ λ΄λΆ ν΄λμ€(inner class)μ ν΄λΉνλ€. 'μ μ λ©€λ² ν΄λμ€'μ 'λΉμ μ λ©€λ² ν΄λμ€'λ λ©€λ² ν΄λμ€μ ν΄λΉνλ€. μ΄λ² κΈμ ν΅ν΄ 4κ°μ§ μ€μ²© ν΄λμ€μ λν΄μ μμλ³΄κ³ , μ λ©€λ² ν΄λμ€λ λλλ‘ staticμΌλ‘ λ§λ€μ΄μΌ νλμ§ μμλ³΄κ³ μ νλ€. 1. μ μ λ©€λ² ν΄λμ€ π§° μ μ λ©€λ² ν΄λμ€λ λ€λ₯Έ ν΄λμ€ μμ μ μΈλκ³ , λ°κΉ₯ ν΄λμ€μ private λ©€λ²μλ..

νκ·Έ λ¬λ¦° ν΄λμ€λ³΄λ€λ ν΄λμ€ κ³μΈ΅κ΅¬μ‘°λ₯Ό νμ©νλΌ - [4μ₯. ν΄λμ€μ μΈν°νμ΄μ€(μμ΄ν 23)]
1. νκ·Έ λ¬λ¦° ν΄λμ€ π§ νκ·Έ λ¬λ¦° ν΄λμ€λ λ κ°μ§ μ΄μμ μλ―Έλ₯Ό ννν μ μμΌλ©°, κ·Έμ€ νμ¬ νννλ μλ―Έλ₯Ό νκ·Έ κ°μΌλ‘ μλ €μ£Όλ ν΄λμ€λ₯Ό λ§νλ€. μλ μ½λλ μκ³Ό μ¬κ°νμ ννν μ μλ νκ·Έ λ¬λ¦° ν΄λμ€μ΄λ€. public class Figure { enum Shape {RECTANGLE, CIRCLE}; // νκ·Έ νλ - νμ¬ λͺ¨μμ λνλΈλ€. final Shape shape; // λ€μ νλλ€μ λͺ¨μμ΄ μ¬κ°ν(RECTANGLE)μΌ λλ§ μ°μΈλ€. double length; double width; // λ€μ νλλ λͺ¨μμ΄ μ(CIRCLE)μΌ λλ§ μ°μΈλ€. double radius; // μμ© μμ±μ Figure2(double radius){ shape = Shape.CIRCLE; this...

μΈν°νμ΄μ€λ νμ μ μ μνλ μ©λλ‘λ§ μ¬μ©νλΌ - [4μ₯. ν΄λμ€μ μΈν°νμ΄μ€(μμ΄ν 22)]
1. μΈν°νμ΄μ€μ μν π£ μΈν°νμ΄μ€λ μμ μ ꡬνν ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μλ νμ μν μ νλ€. ν΄λμ€κ° μ΄λ€ μΈν°νμ΄μ€λ₯Ό ꡬννλ€λ κ²μ μμ μ μΈμ€ν΄μ€λ‘ 무μμ ν μ μλμ§λ₯Ό ν΄λΌμ΄μΈνΈμ μκΈ°ν΄ μ£Όλ κ²μ΄λ€. μΈν°νμ΄μ€λ μ€μ§ μ΄ μ©λλ‘λ§ μ¬μ©ν΄μΌ νλ€. (λ°μμ μ΄ν΄λ³Ό κ²μ΄μ§λ§ μμ 곡κ°μ© μλ¨μΌλ‘ μ¬μ©νμ§ λ§μμΌ νλ€.) 2. μμ μΈν°νμ΄μ€ μν°ν¨ν΄ π₯ μμμ λ§ν μΈν°νμ΄μ€μ μν μ λ§μ§ μλ μλ‘ μμ μΈν°νμ΄μ€λΌλ κ²μ΄ μλ€. μμ μΈν°νμ΄μ€λ λ©μλ μμ΄, μμλ₯Ό λ»νλ static final νλλ‘λ§ κ°λ μ°¬ μΈν°νμ΄μ€λ₯Ό λ§νλ€. public interface PhysicalConstants { // μ보κ°λλ‘ μ (1/λͺ°) static final double AVOGAD..

μΈν°νμ΄μ€λ ꡬννλ μͺ½μ μκ°ν΄ μ€κ³νλΌ - [4μ₯. ν΄λμ€μ μΈν°νμ΄μ€(μμ΄ν 21)]
1. κ°λ π» λν΄νΈ λ©μλλ₯Ό μ μΈνλ©΄, κ·Έ μΈν°νμ΄μ€λ₯Ό ꡬνν ν λν΄νΈ λ©μλλ₯Ό μ¬μ μνμ§ μμ λͺ¨λ ν΄λμ€μμ λν΄νΈ ꡬνμ΄ μ°μ΄κ² λλ€. κΈ°μ‘΄ μΈν°νμ΄μ€μ λ©μλλ₯Ό μΆκ°νλ κΈΈμ΄ μ΄λ Έμ§λ§ λͺ¨λ κΈ°μ‘΄ ꡬν체λ€κ³Ό 맀λλ½κ² μ°λλ리λΌλ 보μ₯μ μλ€. μλ° 7κΉμ§μ μΈμμμλ λͺ¨λ ν΄λμ€κ° "νμ¬μ μΈν°νμ΄μ€μ μλ‘μ΄ λ©μλκ° μΆκ°λ μΌμ μμν μλ€"λΌκ³ κ°μ νκ³ μ₯μ±λμΌλ λ§μ΄λ€. λν΄νΈ λ©μλλ ꡬν ν΄λμ€μ λν΄ μ무κ²λ λͺ¨λ₯Έ μ± ν©μ μμ΄ λ¬΄μμ± 'μ½μ 'λ λΏμ΄λ€. μ΄λ² κΈμμλ μ΄λ° κ²½μ° λ°μν μ μλ λ¬Έμ μν©λ€μ μ΄ν΄λ³΄κ³ κ·Έμ λν ν΄κ²°μ± μ μμ보μ. 2. [λ¬Έμ μν© 1] μκ°ν μ μλ λͺ¨λ μν©μμ λΆλ³μμ ν΄μΉμ§ μλ λν΄νΈ λ©μλλ₯Ό μμ±νκΈ°λ μ΄λ ΅λ€. π€ μλ° 8μ Collcti..

μΆμ ν΄λμ€λ³΄λ€λ μΈν°νμ΄μ€λ₯Ό μ°μ νλΌ(μΆμ 골격 ꡬν(Skeletal Implementation) ν΄λμ€)(2) - [4μ₯. ν΄λμ€μ μΈν°νμ΄μ€(μμ΄ν 20)]
μ΄μ κΈμ ν΅ν΄ μΈν°νμ΄μ€μ μ₯μ λ€μ μμ보μλ€. μ΄λ² κΈμμλ μΈν°νμ΄μ€μ 골격 ꡬν(skeletal implementation) ν΄λμ€λ₯Ό ν¨κ» μ 곡νμ¬ μΈν°νμ΄μ€μ μΆμ ν΄λμ€μ μ₯μ μ λͺ¨λ μ·¨νλ λ°©λ²μ μμ보μ. μΈν°νμ΄μ€μ μΆμ ν΄λμ€λ₯Ό κ°μ΄ μ¬μ©νμ λμ μ₯μ μ 'μΈν°νμ΄μ€μμ ꡬνν΄ μ€ μ μλ κ²λ€μ λν΄νΈ λ©μλλ‘ κ΅¬ννκ³ , ꡬνν΄ μ€ μ μλ κ²λ€μ μΆμ 골격 ν΄λμ€μμ λλ¨Έμ§ λ©μλλ₯Ό ꡬννλ€.'λ κ²μ΄λ€. μΆμ 골격 ꡬν ν΄λμ€λ₯Ό νμ©νμμ λ μ»μ μ μλ 2κ°μ§μ μ₯μ μ λν΄μ μμΈν μμ보μ. (λͺ μΉκ³Ό κ΄λ ¨νμ¬, μΆμ 골격 ν΄λμ€λΌκ³ λΆλ₯΄λ μ΄μ λ μΌλΆλ§ ꡬννκ³ μΌλΆλ ꡬννμ§ μμλ λκΈ° λλ¬Έμ΄λ€. μΈν°νμ΄μ€κ° λΌλ μν μ νλ€κ³ μκ°νλ©΄ μ¬μΈ κ±° κ°λ€.) μ₯μ 1. λ¨μν..

μΆμ ν΄λμ€λ³΄λ€λ μΈν°νμ΄μ€λ₯Ό μ°μ νλΌ(μΈν°νμ΄μ€μ μ₯μ )(1) - [4μ₯. ν΄λμ€μ μΈν°νμ΄μ€(μμ΄ν 20)]
μλ°κ° μ 곡νλ λ€μ€ ꡬν λ©μ»€λμ¦μ 'μΈν°νμ΄μ€μ μΆμ ν΄λμ€' 2κ°μ§κ° μλ€. μλ° 8λΆν° μΈν°νμ΄μ€λ Default Methodλ₯Ό μ 곡ν μ μκΈ° λλ¬Έμ λ λ©μ»€λμ¦ λͺ¨λ μΈμ€ν΄μ€ λ©μλλ₯Ό ꡬν ννλ‘ μ 곡ν μ μλ€. λμ κ°μ₯ ν° μ°¨μ΄λ μΆμ ν΄λμ€κ° μ μν νμ μ ꡬννλ ν΄λμ€λ λ°λμ μΆμ ν΄λμ€μ νμ ν΄λμ€κ° λμ΄μΌ νλ€λ μ μ΄λ€. μλ°λ λ¨μΌ μμλ§ μ§μνλ, μΆμ ν΄λμ€ λ°©μμ μλ‘μ΄ νμ μ μ μνλ λ° μ»€λ€λ μ μ½μ μκ² λλ κ²μ΄λ€. λ°λ©΄ μΈν°νμ΄μ€κ° μ μΈν λ©μλλ₯Ό λͺ¨λ μ μνκ³ κ·Έ μΌλ° κ·μ½μ μ μ§ν¨ ν΄λμ€λΌλ©΄ λ€λ₯Έ μ΄λ€ ν΄λμ€λ₯Ό μμνλ κ°μ νμ μΌλ‘ μ·¨κΈλλ€. μ¬κΈ°κΉμ§κ° μΆμν΄λμ€μ μΈν°νμ΄μ€μ λν κ°λ¨ν μ€λͺ μ΄λ€. μ΄λ² κΈμμ μΈν°νμ΄μ€μ 5κ°μ§ μ₯μ λ€μ μ΄ν΄λ³΄λ©΄μ ..