ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] μžλ°” 클래슀 상속, λ©”μ†Œλ“œ μ˜€λ²„λΌμ΄λ”©
    Android/Java 2021. 1. 18. 21:53
    λ°˜μ‘ν˜•
    • 이 글은 "μžλ°” 온라인 μŠ€ν„°λ””" λ‚΄μš©μ„ μ •λ¦¬ν•˜μ—¬ μž‘μ„±ν•œ κΈ€μž…λ‹ˆλ‹€.

    μžλ°” 상속

    • μƒμ†μ΄λž€ μΊ‘μŠν™”, 좔상화와 같이 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œμ˜ μ£Όμš”ν•œ νŠΉμ§• 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

    • 클래슀 상속은 기쑴의 클래슀의 속성과 κΈ°λŠ₯을 μΆ”κ°€ν•˜κ±°λ‚˜ μž¬μ •μ˜ν•˜μ—¬ μƒˆλ‘œμš΄ 클래슀λ₯Ό μ •μ˜ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

    • 상속을 μ΄μš©ν•˜λ©΄ 기쑴의 클래슀의 λ³€μˆ˜μ™€ λ©”μ†Œλ“œλ₯Ό λͺ¨λ‘ μ‚¬μš©κ°€λŠ₯ν•˜κ³  ν•„μš”μ— 따라 λ©”μ†Œλ“œλ₯Ό μ»€μŠ€ν„°λ§ˆμ΄μ§• ν•  수 μžˆλŠ” 클래슀λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

    • μžλ°” μƒμ†μ˜ μž₯점으둜 μ€‘λ³΅λœ μ½”λ“œλ₯Ό 쀄일 수 있고, μœ μ§€ 보수의 νŽΈλ¦¬μ„±κ³Ό λ‹€ν˜•μ„±μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    • λ‹€λ₯Έ 언어와 λ‹€λ₯΄κ²Œ μžλ°”λŠ” 닀쀑 상속이 λΆˆκ°€λŠ₯ν•˜λŠ”λ° 이λ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€κ°€ μžˆμŠ΅λ‹ˆλ‹€.

    public class ParentClass {
        char Pch;
    
        public void PCprint(){
            System.out.println(Pch);
        }
    }
    
    class ChildClass extends ParentClass{
        char Cch;
    
        public void CCprint(){
            System.out.println(Cch);
        }
    }

    super ν‚€μ›Œλ“œ

    • super ν‚€μ›Œλ“œλŠ” μžμ‹ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨ν΄λž˜μŠ€μ˜ 멀버 λ˜λŠ” λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ μ°Έμ‘°λ˜λŠ” ν‚€μ›Œλ“œμž…λ‹ˆλ‹€.

    • super ν‚€μ›Œλ“œλ‘œ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 있고 super()λŠ” λΆ€λͺ¨ν΄λž˜μŠ€μ˜ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    public class ParentClass {
        String Pstr;
    
        public ParentClass() {
            Pstr = "This is Parent Class";
        }
    
        public ParentClass(String Pstr){
            this.Pstr = Pstr;
        }
    
        public void PCprint(){
            System.out.println(Pstr);
        }
    }

    λΆ€λͺ¨ ν΄λž˜μŠ€λŠ” μœ„ μ½”λ“œμ²˜λŸΌ μž‘μ„±ν•˜μ˜€κ³  클래슀의 μƒμ„±μžλŠ” 두 κ°€μ§€λ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

    class ChildClass extends ParentClass{
        String Cstr;
    
        public ChildClass() {
            Cstr = "This is Child Class";
        }
    
        public void CCprint(){
            super.PCprint();
            System.out.println(super.Pstr);
            System.out.println(Cstr);
        }
    }

    μžμ‹ 클래슀의 λ©”μ†Œλ“œμΈ CCprintμ—μ„œ λΆ€λͺ¨ 클래슀의 λ³€μˆ˜μ™€ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜κΈ° μœ„ν•΄ superν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

    public class Main {
        public static void main(String[] args) {
    
            ParentClass parentClass = new ParentClass();
            ChildClass childClass = new ChildClass();
    
            /**
             * This is Parent Class
             * This is Parent Class
             * This is Child Class
            **/
            childClass.CCprint();
        }
    }

    main λ©”μ†Œλ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같이 좜λ ₯이 λ©λ‹ˆλ‹€.
    ChildClass의 μƒμ„±μžλŠ” λΆ€λͺ¨ 클래슀의 κΈ°λ³Έ μƒμ„±μžμΈ ParentClass()κ°€ μ‹€ν–‰λ˜λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.


    class ChildClass extends ParentClass{
        String Cstr;
    
        public ChildClass() {
            super("This is new constructor");
            Cstr = "This is Child Class";
        }
    
        public void CCprint(){
            super.PCprint();
            System.out.println(super.Pstr);
            System.out.println(Cstr);
        }
    }

    λ‹€μŒκ³Ό 같이 ChildClass의 μƒμ„±μž 내뢀에 super() ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    public class Main {
        public static void main(String[] args) {
    
            ParentClass parentClass = new ParentClass();
            ChildClass childClass = new ChildClass();
    
            /**
             * This is new constructor
             * This is new constructor
             * This is Child Class
            **/
            childClass.CCprint();
        }
    }

    main λ©”μ†Œλ“œ κ²°κ³Όκ°€ super() ν‚€μ›Œλ“œλ‘œ λ³€κ²½λœ 좜λ ₯을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.


    λ©”μ†Œλ“œ μ˜€λ²„λΌμ΄λ”©

    • λ©”μ†Œλ“œ μ˜€λ²„λΌμ΄λ”©μ€ μžμ‹ ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨λ‘œ 상속받은 λ©”μ†Œλ“œλ₯Ό μž¬μ •μ˜ν•˜λŠ” 것을 λœ»ν•˜κ²Œ λ©λ‹ˆλ‹€.

    • privateλ₯Ό μ œμ™Έν•œ λΆ€λͺ¨ν΄λž˜μŠ€μ˜ λ©”μ†Œλ“œλŠ” λͺ¨λ‘ μžμ‹ν΄λž˜μŠ€μ— 상속이 되고 μ›ν•˜λŠ” λ©”μ†Œλ“œλŠ” μƒˆλ‘œ μž¬μ •μ˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    • μ˜€λ²„λΌμ΄λ”©μ€ μ„ μ–ΈλΆ€λŠ” κ·ΈλŒ€λ‘œ μœ μ§€ν•˜κ³  μ½”λ“œ λ‚΄μš©λ§Œ λ³€κ²½ν•˜μ—¬ μž¬μ •μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

    public class ParentClass {
        String Pstr;
    
        public ParentClass() {
            Pstr = "This is Parent Class";
        }
    
        public ParentClass(String Pstr){
            this.Pstr = Pstr;
        }
    
        public void PCprint(){
            System.out.println(Pstr);
        }
    }
    
    class ChildClass extends ParentClass{
        String Cstr;
    
        public ChildClass() {
            super("This is new constructor");
            Cstr = "This is Child Class";
        }
    
        @Override
        public void PCprint() {
            //super.PCprint();
            System.out.println();
        }
    
        public void CCprint(){
            super.PCprint();
            System.out.println(super.Pstr);
            System.out.println(Cstr);
        }
    }

    ChildClassμ—μ„œ λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ©”μ†Œλ“œμΈ PCprintλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•˜μ—¬ μž¬μ •μ˜ν•˜λŠ” λͺ¨μŠ΅μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
    μ˜€λ²„λΌμ΄λ”©μ„ ν•˜μ§€ μ•Šμ„ 경우 κΈ°λ³Έκ°’μœΌλ‘œ super.PCprint() ν•¨μˆ˜κ°€ ν˜ΈμΆœλ©λ‹ˆλ‹€.

    λ°˜μ‘ν˜•
Designed by Tistory.