etc./정보처리기사

★★★ (Java) 활용

innit 2021. 9. 27. 13:37

 

- 추상 메소드        : 자식 클래스에서 재정의해야만 사용할 수 있는 메소드

- 추상 클래스        : 추상 메소드를 1개 이상 포함하는 클래스

- 클래스의 형 변환 : 추상 메소드를 부모 클래스의 객체 변수를 통해 사용하기 위해서, 부모 클래스의 객체 변수를 선언할 때 자식 클래스의 생성자를 이용하는 것

 

 

 

 

(출력 : Chicken is animal Zoo)

abstract class Animal { 추상 클래스 Animal을 정의
        String a = "is animal"; 문자열 변수 a를 선언하고 "is animal"로 초기화
        abstract void look(); 추상 메소드 look()을 정의
        void show() { 메소드 show()를 정의
                System.out.println("zoo"); 'Zoo'를 출력
        }  
}  
class Chicken extends Animal { 부모 클래스가 Animal인 클래스 Chicken을 정의 + 상속
        Chicken() { 메소드 Chicken()을 정의 (클래스와 이름이 동일하므로 생성자)
                look(); look() 메소드를 호출
        }  
        void look() { 메소드 look()을 정의, 셋쨋줄의 추상 메소드를 재정의하는 것
                System.out.println("Chicken" + a); 'Chicken'과 a의 값, 'is animal'을 출력
        }  
        void display() { 메소드 display()를 정의
                System.out.println("two wings");  
        }  
}  
public class Test {  
        public static void main(String[] args) {  
                Animal a = new Chicken(); Chicken 클래스의 생성자를 이용해 Animal 클래스의 객체 변수 a를 선언
                a.show(); a의 show() 메소드를 호출
        }  
}  

※ 부모 클래스의 객체 변수를 선언하면서 자식 클래스의 생성자를 사용하면 형 변환이 발생합니다.

※ 클래스 형 변환이 발생하여, 메소드 look()은 자식 클래스에서 재정의 되었습니다. 따라서, 부모 클래스의 메소드 look()이 호출된다면 자식 클래스의 메소드 look()이 대신 수행되어야 합니다.

 

 

 

 

728x90
반응형