μ„Έλ―Έλ‚˜

    [JAVA] :: μžλ°” 기초 6 :: μΈν„°νŽ˜μ΄μŠ€ (Interface)

    πŸ‘€ λ…Έμ…˜μœΌλ‘œ 보기 0. μΈν„°νŽ˜μ΄μŠ€λž€? μΈν„°νŽ˜μ΄μŠ€λŠ” μΌμ’…μ˜ μΆ”μƒν΄λž˜μŠ€λ‘œ μΆ”μƒλ©”μ†Œλ“œ, μƒμˆ˜λ§Œ 포함 κ°€λŠ₯ πŸ’‘ μžλ°” 8 λΆ€ν„° default λ©”μ†Œλ“œ, static λ©”μ†Œλ“œλ₯Ό μΈν„°νŽ˜μ΄μŠ€μ˜ λ©€λ²„λ‘œ μ‚¬μš©κ°€λŠ₯ 좔상 클래슀처럼 new λ₯Ό μ΄μš©ν•œ 객체생성을 ν•  수 μ—†λ‹€. μΈν„°νŽ˜μ΄μŠ€μ˜ μ„ μ–Έκ³Ό 상속 interface InterfaceName { } class ClassName implements InterfaceName{ } 1. μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ“°λŠ” 이유 κ·Έλ ‡λ‹€λ©΄ 좔상 클래슀λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ“°λŠ” μ΄μœ κ°€ λ¬΄μ—‡μΌκΉŒ? μΈν„°νŽ˜μ΄μŠ€λŠ” 좔상 클래슀 보닀 더 좔상적인 κ°œλ…μ΄λ‹€. 좔상 ν΄λž˜μŠ€λŠ” κ΅¬ν˜„ λ©”μ„œλ“œλ„ 포함을 ν•  수 μžˆμ–΄ ν™•μž₯의 κ°œλ…μ΄λΌλ©΄ μΈν„°νŽ˜μ΄μŠ€λŠ” κ΅¬ν˜„ μ½”λ“œκ°€ μ—†μ–΄ κΈ°λŠ₯ κ΅¬ν˜„μ„ κ°•μ œν•œλ‹€. 좔상 ν΄λž˜μŠ€λŠ” 닀쀑상속을 μ§€μ›ν•˜μ§€..

    [JAVA] :: μžλ°” 기초 5 :: λ‹€ν˜•μ„± / InstanceOf / Abstract Class / Upcasting & Downcasting

    λ‹€ν˜•μ„±(polymorphism) 객체지ν–₯μ—μ„œ λ‹€ν˜•μ„±μ΄λž€ "μ—¬λŸ¬κ°€μ§€ ν˜•νƒœλ₯Ό κ°€μ§ˆ 수 μžˆλŠ”"μ΄λž€ λœ»μ΄λ‹€. μžλ°”μ—μ„œλŠ” μƒμœ„ 클래슀 νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ ν•˜μœ„ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μ°Έμ‘°ν•  수 μžˆλ„λ‘ ν•˜λŠ” 것이닀. class Animal{ void run(){System.out.println("λ‹¬λ¦¬μž");} } class Cat extends Animal{ void eat(){System.out.println("μΈ„λ₯΄λ¨Ήμž");} } class Polymorphism{ public static void main(String[] args) { Animal cat = new Cat(); cat.run(); // cat.eat(); error } } μ‹€μ œ μƒμ„±λœ μΈμŠ€ν„΄μŠ€λŠ” Cat νƒ€μž…μ΄μ§€λ§Œ Animal νƒ€μž…μœΌλ‘œ μ°Έμ‘°λ˜μ—ˆλ‹€. 이..

    [JAVA] :: μžλ°” 기초 4 :: 상속 / μ˜€λ²„λΌμ΄λ”©(overriding) / IS-A vs HAS-A / κ°€μƒν•¨μˆ˜

    상속(Inheritance) μƒμ†μ΄λž€, 기쑴에 있던 클래슀λ₯Ό μž¬μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ 클래슀λ₯Ό μƒμ„±ν•˜λŠ” 것이닀. 즉 상속을 λ°›λŠ” ν΄λž˜μŠ€λŠ” μƒμ†ν•˜λŠ” 클래슀의 λ©€λ²„λ³€μˆ˜μ™€ λ©”μ†Œλ“œλ₯Ό μƒμ†λ°›λŠ”λ‹€. μƒμ†ν•˜λŠ” 클래슀 : μƒμœ„ 클래슀, λΆ€λͺ¨ 클래슀, base class, super class μƒμ†λ°›λŠ” 클래슀 : ν•˜μœ„ν΄λž˜μŠ€, μžμ‹ 클래슀, derived class, sub class 기쑴에 있던 ν΄λž˜μŠ€λ³΄λ‹€ 더 ꡬ체적인 κΈ°λŠ₯을 가진 클래슀λ₯Ό κ΅¬ν˜„ν•΄μ•Όν•  λ•Œ κΈ°μ‘΄ 클래슀λ₯Ό 상속을 ν•˜κ²Œλœλ‹€. μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀의 멀버듀을 상속 λ°›κ²Œ λ˜μ–΄ μžμ‹ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ 클래슀λ₯Ό ν¬ν•¨ν•˜λŠ” ν˜•νƒœκ°€ λœλ‹€. 상속은 μ•„λž˜μ™€ 같이 extends(ν™•μž₯)λ₯Ό μ‚¬μš©ν•΄ μž‘μ„±ν•œλ‹€. class Child extends Parent{ } extends λ’€μ—λŠ” 단 ν•˜..

    [JAVA] :: μžλ°” 기초 3 :: Static / Singleton Patton / Array / ArrayList

    Static μ΄λž€? static은 정적인, κ³ μ •λœμ΄λž€ 의미둜 컴파일 λ‹¨κ³„μ—μ„œ ν΄λž˜μŠ€λ‘œλ”κ°€ 클래슀λ₯Ό λ‘œλ”©ν•  λ•Œ ν•¨κ»˜ λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλ˜μ–΄ ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ μœ μ§€λ˜λŠ” λ©”λͺ¨λ¦¬λ₯Ό λ§ν•œλ‹€. static은 클래슀, Method, μƒμˆ˜ λ“±κ³Ό ν•¨κ»˜ Method Area에 클래슀 λ³„λ‘œ μ €μž₯λ˜μ–΄ κ΄€λ¦¬ν•˜λ©° λͺ¨λ“  μ“°λ ˆλ“œκ°€ κ³΅μœ ν•œλ‹€. 즉 λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ ν•˜λ‚˜μ˜ μ£Όμ†Œλ₯Ό 가리킀고 μžˆμ–΄ ν•˜λ‚˜μ˜ 값을 κ³΅μœ ν•œλ‹€. static ν‚€μ›Œλ“œλ₯Ό κ°€μ§€λŠ” λ©”μ†Œλ“œμ™€ λ³€μˆ˜λ₯Ό 클래슀 λ©”μ†Œλ“œ, 클래슀 λ³€μˆ˜ ν˜Ήμ€ 정적 ν•„λ“œ, 정적 λ©”μ†Œλ“œλΌκ³  λΆ€λ₯Έλ‹€. static ν‚€μ›Œλ“œκ°€ 뢙은 λ©€λ²„λŠ” 객체에 μ†Œμ†λœ 것이 μ•„λ‹Œ ν΄λž˜μŠ€μ— μ†Œμ†λ˜μ–΄ 있기 λ•Œλ¬Έμ΄λ‹€. 정적 멀버 μ„ μ–Έ class Sclass{ static int cVar = 123; //클래슀 λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™” ..

    [JAVA] :: μžλ°” 기초 2 :: μƒμ„±μž / μ˜€λ²„λ‘œλ”© / μ ‘κ·Όμ œμ–΄μž / 정보은닉

    μƒμ„±μž μƒμ„±μžλŠ” ν΄λž˜μŠ€μ— μ„ μ–Έλ˜μ–΄μžˆλŠ” ν΄λž˜μŠ€μ™€ λ™μΌν•œ 이름을 가지고 μžˆλŠ” λ©”μ†Œλ“œμ΄λ‹€. μƒμ„±μžλŠ” 객체λ₯Ό μƒμ„±ν• λ•Œ ν˜ΈμΆœλœλ‹€. μƒμ„±μžμ™€ λ©”μ†Œλ“œμ˜ ν˜•νƒœ 차이 λ©”μ†Œλ“œ μƒμ„±μž κ΅¬ν˜„λΆ€ returnν˜• λ©”μ†Œλ“œλͺ… (νŒŒλΌλ―Έν„° 1, νŒŒλΌλ―Έν„°2,,,) 클래슀λͺ…(νŒŒλΌλ―Έν„° 1, νŒŒλΌλ―Έν„° 2,,,) ex) int Sum(int a, int b) ClassName(int a, int b) 이처럼 μƒμ„±μžλŠ” λ¦¬ν„΄ν˜•μ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©° ν΄λž˜μŠ€μ™€ λ™μΌν•œ 이름을 가진닀. νŒŒλΌλ―Έν„°λ₯Ό λ°›μ•„ λ©€λ²„λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”λ₯Ό μœ„ν•΄ μ‚¬μš©ν•  수 있으며 λͺ…μ‹œμ μœΌλ‘œ μž‘μ„±ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μžλ™μœΌλ‘œ κΈ°λ³Έμƒμ„±μžκ°€ μ œκ³΅λœλ‹€. μ΄λ ‡κ²Œ 기본으둜 μƒμ„±λ˜λŠ” μƒμ„±μžλ₯Όμ„ λ””ν΄νŠΈ μƒμ„±μžλΌκ³ λ„ λΆ€λ₯Έλ‹€. λ””ν΄νŠΈ μƒμ„±μžλŠ” precompile λ‹¨κ³„μ—μ„œ μΆ”κ°€κ°€ λœλ‹€. λ§Œμ•½ νŒŒλΌλ―Έν„°κ°€ μžˆλŠ” μƒμ„±μžλ₯Ό κ΅¬ν˜„..

    [JAVA] :: μžλ°” 기초 1 :: 객체 / 클래슀 / μΈμŠ€ν„΄μŠ€ / 속성 / ν•¨μˆ˜ / λ©”μ†Œλ“œ

    μžλ°”λŠ” λŒ€ν‘œμ μΈ 객체지ν–₯(Objecti Oriented Programming) 언어이닀. C언어와 같은 μ ˆμ°¨μ§€ν–₯언어와 λ‹€λ₯Έμ μ€ μžλ°”λŠ” λͺ¨λ“  데이터λ₯Ό 객체둜 μ·¨κΈ‰ν•˜μ—¬ 객체 μ€‘μ‹¬μœΌλ‘œ μž‘μ„±λœλ‹€λŠ” 점이닀. OOP의 μž₯μ μ—λŠ” μ½”λ“œμ˜ ν™•μž₯μ„±κ³Ό μž¬ν™œμš©μ„±, μœ μ§€λ³΄μˆ˜κ°€ μ ˆμ°¨μ§€ν–₯에 λΉ„ν•΄ κ°œμ„ λ˜λŠ” 점이 μžˆλ‹€. μ΄λŸ¬ν•œ 객체λ₯Ό λ§Œλ“€κ³  κ΅¬μ„±ν•˜λŠ” κ°œλ…λ“€μ„ μ•Œμ•„λ³΄μž. 객체(object) κ°μ²΄λž€ object, μ‘΄μž¬ν•˜λŠ” 사물 ν˜Ήμ€ κ°œλ…, 논리와 같은 λ¬΄ν˜•μ μΈ 것듀도 객체라 μ •μ˜ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ μ‚¬λžŒ, μ°¨, μ±… λ“± 물리적으둜 μ‘΄μž¬ν•˜λŠ” 것과 κ°œλ…μ μΈ μ£Όλ¬Έ, 계산 등도 객체가 될 수 μžˆλ‹€. κ°μ²΄λŠ” 각각 λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•˜λ©° λ‹€λ₯Έ 객체와 μ„œλ‘œ μƒν˜Έμž‘μš©μ„ ν•  수 μžˆλ‹€. μžλ°”μ—μ„œλŠ” ν΄λž˜μŠ€μ—μ„œ μƒμ„±λœ 데이터λ₯Ό 객체둜 μ •μ˜ν•œλ‹€. 클래슀(clas..