ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 상속 예제
    프로그래밍/JAVA 2020. 7. 26. 02:23
    public class ParentClass {
    
        int openYear = 1995;
    
        public ParentClass() {
            System.out.println("부모 클래스 생성자");
        }
    
        public void parentFun() {
            System.out.println("parentFun()");
        }
    
        private void privateFun() {
            System.out.println("privateFun()");
        }
    
        public void makeJJajang() {
            System.out.println("makeJJajang() START");
        }
    }
    

     

    public class FirstChildClass extends ParentClass {
    
        int openYear = 2010;
    
        public FirstChildClass() {
            System.out.println("FirstChildClass 생성자");
        }
    
        public void firstChildFun() {
            System.out.println("firstChildFun()");
        }
    
        // 메소드 오버라이드(Override)
        @Override
        public void makeJJajang() {
            System.out.println("firstChildClass makeJJajang() START");
        }
    
        // 상위 클래스를 호출할 때 super 키워드를 사용
        public void getOpenYear() {
            System.out.println("firstChildClass Open Year : " + this.openYear);
            System.out.println("parentClass Open Year : " + super.openYear);
        }
    }
    

     

    public class SecondChildClass extends ParentClass {
    
        public SecondChildClass() {
            System.out.println("SecondChildClass 생성자");
        }
    
        public void secondChildFun() {
            System.out.println("secondChildFun()");
        }
    
        // 메소드 오버라이드(Override)
        @Override
        public void makeJJajang() {
            System.out.println("secondChildClass makeJJajang() START");
        }
    }
    

     

    /* 20200906 - 상속 스터디 */
    
    public class MainClass {
        public static void main(String[] args) {
    
            FirstChildClass firstChild = new FirstChildClass();
            firstChild.parentFun();
            firstChild.firstChildFun();
            /* 출력 순서
                부모 클래스 생성자
                자식 클래스 생성자
                parentFun()
                firstChildFun()
             */
    
            // 부모클래스에 private으로 선언된 메소드는 자식 클래스가 접근할 수 없음
            // firstChild.privateFun();
    
            // 클래스도 자료형이므로 다음과 같이 배열 형태로 사용가능
            // 부모 클래스 배열에 자식 클래스 객체를 담을 수 있다.
            ParentClass[] pArr = new ParentClass[2];
            ParentClass fch = new FirstChildClass();
            ParentClass sch = new SecondChildClass();
            pArr[0] = fch;
            pArr[1] = sch;
    
            for(int i=0;i<pArr.length;i++) {
                pArr[i].makeJJajang();
            }
    
            firstChild.getOpenYear();
    
        }
    }

     

    추가로 알게된 점

    Object 클래스는 모든 클래스의 상위 클래스이므로 즉 모든 클래스의 부모 클래스라고 할 수 있다.

    댓글

Designed by Tistory.