[[TableOfContents]] == ì¼ì‹œ == * 오후 12시 5ë¶„ ~ 1시 45ë¶„ == ì°¸ê°€ìž == || ìœ ìž¬ë²” || ì°¸ì„ || || ìµœë‹¤ì¸ || 반참 || || ì´ì§€ìˆ˜ || ì°¸ì„ || || 김용준 || ì°¸ì„ || || ê¹€ì •ë¯¼ || ì°¸ì„ || == ì§„í–‰ ìƒí™© == * 김용준 í•™ìš°ì˜ ë°œí‘œ * Javaì˜ ì •ì„ - Chapter 7-1~4 === 발표 ë‚´ìš© === * '''ìƒì†(Inheritance)''' : ìƒì†ì„ ë°›ì€ ìžì† í´ëž˜ìŠ¤ëŠ” ìƒì†ì„ 해준 ì¡°ìƒ í´ëž˜ìŠ¤ì˜ ë©”ì„œë“œë‚˜ 변수를 쓸 수 있다. * 재사용(재활용)ì„ í†µí•´ì„œ 코드가 간결해지는 장ì ì´ ìžˆë‹¤. * ìƒì† 시 ìƒì„±ìžì˜ 순서는 부모 í´ëž˜ìФ -> ìžì† í´ëž˜ìФì´ë‹¤.(super()ì—서 ìžì„¸í•œ 설명) * '''JAVA'''는 '''ë‹¨ì¼ ìƒì†'''ë§Œ ì§€ì›í•œë‹¤.(C++는 다중 ìƒì†ì„ ì§€ì›í•œë‹¤.) * ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 통해 ë‹¨ì¼ ìƒì†ì„ ë³´ì™„í• ìˆ˜ 있다. * 다중 ìƒì†ì˜ ë¬¸ì œì ì€ ìžì† í´ëž˜ìФì—서 ì–´ëŠ í•œ 메서드나 변수를 ê°€ì ¸ 올 때 서로 다른 ì¡°ìƒ í´ëž˜ìФì—서 ê°™ì€ ì´ë¦„ì„ ê°€ì§„ 메서드나 변수가 있다면 ì´ê²ƒë“¤ì´ 어디서 오는건지 몰ë¼ì„œ ë¬¸ì œê°€ ìƒê¸°ê¸° 때문ì´ë‹¤. {{{class ìƒì†ë°›ëŠ” í´ëž˜ìФ extends ìƒì†í•˜ëŠ” í´ëž˜ìФ Ex) class Car{ } class Taxi extends Car{ } }}} * '''Object class''' : '''최ìƒìœ„ í´ëž˜ìФ'''ì´ë‹¤. ìƒì† 받는 í´ëž˜ìŠ¤ê°€ 없다면 ê·¸ í´ëž˜ìŠ¤ëŠ” Object classì—게 ìƒì†ì„ 받는다. * ìœ„ì˜ ì˜ˆì‹œì˜ Car í´ëž˜ìŠ¤ë„ ì´ë¯¸ Object classì—게 ìƒì†ë°›ê³ 있다. 따로 ìž…ë ¥ì„ í•´ì£¼ì§€ ì•Šì•„ë„ ì»´íŒŒì¼ëŸ¬ 단계ì—서 붙여준다. class Car extends Object{ } * 11ê°€ì§€ì˜ ë©”ì„œë“œë¥¼ 기본ì 으로 ê°€ì§€ê³ ìžˆë‹¤. (toString(),equals() 등등) * '''오버 ë¼ì´ë”©''' * ì¡°ìƒ í´ëž˜ìФì—서 ì •ì˜ëœ 메서드를 ìžì† í´ëž˜ìŠ¤ì— '''ìž¬ì •ì˜'''하는 ê²ƒì„ ë§í•œë‹¤. * 오버 ë¼ì´ë”©ì€ ì´ë¦„, 매개변수, return íƒ€ìž…ì´ ê°™ì•„ì•¼í•œë‹¤. * 오버로딩과 비êµí•˜ìžë©´ ì˜¤ë²„ë¡œë”©ì€ ê¸°ëŠ¥ì„ ì¶”ê°€í•˜ëŠ” 것ì´ë¼ë©´ 오버 ë¼ì´ë”©ì€ ë‚´ìš©ì„ ìˆ˜ì •í•˜ëŠ” 것ì´ë‹¤. * ìžì† í´ëž˜ìФì—서 오버 ë¼ì´ë”©ì„ 하면 ì¡°ìƒ í´ëž˜ìŠ¤ì˜ ë©”ì„œë“œë¥¼ '''ì€ë‹‰'''ì„ í• ìˆ˜ 있다.('''ì€ë‹‰í™”''') {{{오버ë¼ì´ë”©ì˜ 규칙 1. 오버ë¼ì´ë”© í• ë•Œì—는 ì ‘ê·¼ ì œí•œìžì˜ 범위가 ì¡°ìƒ í´ëž˜ìŠ¤ì˜ ë©”ì„œë“œë³´ë‹¤ 같거나 커야한다. (private < package < protected < public) 즉 ì¡°ìƒ í´ëž˜ìФ 메서드가 private 메서드ì´ë©´ 오버ë¼ì´ë”©ì„ í• ìˆ˜ 없다. 2. 오버ë¼ì´ë”© ëœ í•˜ìœ„ í´ëž˜ìŠ¤ì˜ ë©”ì„œë“œëŠ” throws êµ¬ë¬¸ì´ ìžˆìœ¼ë©´ ìƒìœ„ í´ëž˜ìŠ¤ì˜ ì˜¤ë²„ë¼ì´ë”©ì„ 준 ë©”ì„œë“œë„ ë°˜ë“œì‹œ í•´ 당 예외 í´ëž˜ìŠ¤ë¥¼ 준하는 throws êµ¬ë¬¸ì´ ìžˆì–´ì•¼ 한다. 3. 예외 처리는 ìžì† í´ëž˜ìŠ¤ê°€ ì¡°ìƒ í´ëž˜ìŠ¤ë³´ë‹¤ ë” ë§Žì´ í• ìˆ˜ 없다. 4. static 메서드를 ì¡°ìƒ í´ëž˜ìФì—서 ì¸ìŠ¤í„´ìŠ¤ 메서드로 오버ë¼ì´ë”©ì´ 불가능하다.}}} * '''super''' : ì¡°ìƒ í´ëž˜ìŠ¤ë¥¼ ë”°ë¼ê°€ëŠ” this와 ê°™ì€ ê²ƒ.('''명시ì ''') * this는 ìžì‹ í´ëž˜ìФ ì•ˆì˜ ê²ƒì„ ê°€ë¦¬í‚¤ë‹¤ë©´ super()는 ì¡°ìƒ í´ëž˜ìŠ¤ì˜ ë³€ìˆ˜ë‚˜ 메소드를 가리 킬 때 쓰는 것ì´ë‹¤. * ë§Œì¼ ì¡°ìƒ í´ëž˜ìФì—ë§Œ 있는 변수 xê°€ 있다면 ìžì† í´ëž˜ìФì—서 this.x로 참조가 가능하지만 super.x로 함으로 명시ì 으로 표현하ìž. * privateê°€ 걸린 변수나 메소드는 참조 불가(private는 깡패! get,set메서드를 사용하ìž) * super()는 ìƒìœ„ í´ëž˜ìŠ¤ì˜ ìƒì„±ìžë¥¼ 가리 í‚¬ë•Œë„ ì“°ì¸ë‹¤. {{{ class Car{ Car(){ } } class Taxi extends Car{ Taxi(){ super(); } } super() = Car() 쉽게 super()를 Car ìƒì„±ìž 메서드ë¼ê³ ìƒê°í•˜ë©´ ëœë‹¤. 주ì˜! : ìžì† í´ëž˜ìŠ¤ì˜ ìƒì„±ìžì•ˆì—서 맨 ì•žì— super();ê°€ 있어야한다. 왜ëƒí•˜ë©´ 부모 í´ëž˜ìŠ¤ê°€ 미리 ë©”ëª¨ë¦¬ì— ì 재ë˜ì–´ì•¼ ìžì†í´ëž˜ìŠ¤ê°€ ì ìž¬í• ìˆ˜ 있기 때문ì´ë‹¤. }}} * '''Package''' : í´ëž˜ìŠ¤ê°€ .class 확장ìžì˜ 파ì¼ì¸ 것 처럼 패키지는 사실 물리ì 으로 '''ë””ë ‰í† ë¦¬'''ì´ë‹¤. * ì´í´ë¦½ìФì—서 패키지를 ë§Œë“¤ê³ ê·¸ ì•ˆì— í´ëž˜ìŠ¤ë¥¼ 만들면 ê·¸ í´ëž˜ìФ ì œì¼ ìœ„ì— í´ë” ì´ë¦„ì´ ë‚˜íƒ€ë‚œë‹¤. * import 패키지명.í´ëž˜ìФ. * * *(Asterisk, 와ì¼ë“œ 카드) : 패키지 안, í´ëž˜ìФ 안 ëª¨ë“ ë©”ì„œë“œë¥¼ 다 ì“°ê² ë‹¤ëŠ” 것. {{{ class íŒŒì¼ êµ¬ì¡° package 패키지명; import 패키지명.í´ëž˜ìФ. * public class í´ëž˜ìŠ¤ëª… { ìƒ ëžµ...} }}} * '''ì œì–´ìž''' : ì ‘ê·¼ ê¶Œí•œì„ ì œì–´í•˜ëŠ” 것. ||ì ‘ê·¼ ì œì–´ìž|| public, protected, default, private || || ê·¸ 외 || static, final, abstract, native, transient, synchronized, volatile, strictfp etc... || * finalì€ Cì—서 const와 ê°™ì€ ê²ƒì´ë‹¤. * final 변수를 ì„ ì–¸ë§Œ 한 후 ìƒì„±ìžì—서 final 변수를 초기화해서 ê°ì²´ë§ˆë‹¤ 다른 ìƒìˆ˜ë¥¼ 만들 수 있다. * staticì€ instant하지 ì•Šê³ ë„ ì“¸ 수 있는 것. staticì´ ë¶™ì€ ë³€ìˆ˜ì™€ 메서드를 í´ëž˜ìФ 변수, 메서드ë¼ê³ 한다. * static finalì€ staticê³¼ finalì˜ í•©ì³ì§„ 형태로 ì¸ìŠ¤í„´ìŠ¤í•˜ì§€ ì•Šê³ ì‰½ê²Œ 참조하는 ìƒìˆ˜ê°€ 필요한 ê°™ì€ ê²½ìš°ì— ì“°ì¸ë‹¤. (Ex : Math.PI()) * abstract는 ë‚´ìš© 여부를 ì •í™•ížˆ 모를 때 ì¼ë‹¨ 형태(몸통)ë§Œ 만들어 ë†“ê³ ë‚˜ì¤‘ì— ê°€ì ¸ë‹¤ 쓰는것. * class를 ì¶”ìƒí™” 하는 ê²ƒì´ ì•„ë‹ˆë¼ ì‚¬ì‹¤ ë©”ì„œë“œì— ì“°ëŠ” 것ì´ë‹¤. class ì•žì— ë¶™ì€ ì´ìœ 는 ê·¸ í´ëž˜ìФ ì•ˆì— abstract methodê°€ ìžˆë‹¤ê³ ë‚˜íƒ€ë‚´ëŠ” 것ì´ë‹¤. * abstract는 ê°™ì€ í´ëž˜ìФ ë‚´ì—서 ì„¤ì •ì„ í•˜ì§€ 못하며 다른 í´ëž˜ìФì—서 무조건 오버 ë¼ì´ë”©ì„ 해줘야한다. * 그래서 abstract는 private로 ì„¤ì • í• ìˆ˜ 없다. || || ê°™ì€ í´ëž˜ìФ || ê°™ì€ íŒ¨í‚¤ì§€ || ìžì† í´ëž˜ìФ|| ì „ì²´ || ||public || â—‹ || â—‹ || â—‹ || â—‹ || ||protected || â—‹ || â—‹ || â—‹ || || ||package || â—‹ || â—‹ || || || ||private || â—‹ || || || || * 캡ìŠí™” : privated ë˜ëŠ” protected(대부분 privated)로 변수나 메서드를 ëª¨ë‘ ì”Œì›Œì„œ ì ‘ê·¼ ì œí•œì„ ë‘는 것. ê·¸ë¦¬ê³ ì´ë¥¼ get~ì´ë‚˜ set~로 ì ‘ê·¼ì„ í•˜ëŠ” 것ì´ë‹¤. * ê·¸ë ‡ê¸°ì— get, setì€ public으로 한다. * ìƒì„±ìžë„ 특수한 메서드ì´ê¸° ë•Œë¬¸ì— ìº¡ìŠí™”ì— í¬í•¨ëœë‹¤. * ê·¸ë ‡ê¸°ì— ë©”ì„œë“œë¥¼ ì´ìš©í•´ ìƒì„±ìžë¥¼ ì„ ì–¸ í• ìˆ˜ë„ ìžˆë‹¤. {{{ class Car{ private static Car A = new Car(); private car(){} public static Car new Car(){ return A } main class>> Car A; A = Car.newCar(); }}} * 위와 ê°™ì€ ê³¼ì •ì„ í†µí•´ 메서드를 ì´ìš©í•´ ìƒì„±ìžë¥¼ ì„ ì–¸í•œë‹¤. * staticê³¼ abstract는 ê°™ì´ ì“¸ 수 없다. staticì€ ë‚´ìš©ì´ ìžˆì–´ì•¼ 하는 것ì´ê³ abstract는 형태만 잡는 것ì´ê¸° 때문ì´ë‹¤. * abstract와 finalë„ ê°™ì´ ì“¸ 수 없다. abstract는 ìƒì†ì„ 통해 ê¸°ëŠ¥ì„ ì™„ì„±ì‹œí‚¤ì§€ë§Œ finalì€ ì²˜ìŒì— ì„¤ì •í•œ ê²ƒì„ ë‚˜ì¤‘ì— ìˆ˜ì •ì„ í•˜ì§€ 못하게 하기 때문ì´ë‹¤. * private와 abstract ë˜í•œ ê°™ì´ ì“¸ 수 없다. abstract는 ìƒì†ì„ 통해 ê¸°ëŠ¥ì„ ì™„ì„±ì‹œì¼œì•¼ 하지만 private로 ì ‘ê·¼ì„ ë§‰ì•„ë²„ë¦¬ëŠ” ê²ƒì€ ëª¨ìˆœë˜ëŠ” 것ì´ê¸° 때문ì´ë‹¤. * 마지막으로 private와 finalì„ ê°™ì´ ì“¸ 수 필요가 없다. ì¡°ìƒ í´ëž˜ìФì—서 final private로 메소드를 만들면 ì• ì´ˆì— privateì— ì˜í•´ 오버ë¼ì´ë”©ì„ í• ìˆ˜ 없기 ë•Œë¬¸ì— í• í•„ìš”ê°€ 없다. == ë‹¤ìŒ ì§„í–‰ == * Chapter 7-5~7 다형성,ì¶”ìƒ,ì¸í„°íŽ˜ì´ìФ * 발표 : ìœ ìž¬ë²” == ê³¼ì œ == === ìœ ìž¬ë²” === === ìµœë‹¤ì¸ === === ì´ì§€ìˆ˜ === === 김용준 === === ê¹€ì •ë¯¼ === == 후기 == ----- [한ìžê³µ/시즌3]