자격증/정보처리기사 실기 - 기출문제

[정보처리기사 실기] 2020년 3회 11 - 프로그래밍 [JAVA]

쏠솔랄라 2025. 7. 13. 14:45

 

 

 

11 다음 JAVA로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)

abstract class Vehicle {
	String name;
    abstract public String getName(String val);
    public String getName() {
    	return "Vehicle name : " + name;
    }
}
class Car extends Vehicle {
	private String name;
    public Car(String val) {
    	name = super.name = val;
    }
	public String getName(String val) {
    	return "Car name : " + val;
    }
    public String getName(byte[] val) {
    	return "Car name : " + val;
    }
}
public class Test {
	public static void main(String[] args) {
    	Vehicle obj = new Car("Spark");
        System.out.print(obj.getName());
    }
}

 

 

 

더보기

Vehicle name : Spark

 

 

 

해설

코드 실행순서 및 해석
1 abstract class Vehicle {   추상클래스
2

     String name;   name 변수 선언
6 부모클래스의 name에 Spark를 넣는다
3      abstract public String getName(String val);   추상메서드 정의
-> getName()을실행하는 코드가 없다
-> 하위 클래스에서 재정의해서 사용하게 됨
4      public String getName() { 8 호출
5           return "Vehicle name : " + name; 9 Vehicle name 출력
+ 2줄의 name에 Spark가 담겨 있기 때문에 Spark 출력
6      }    
7 }    
8 class Car extends Vehicle {   Vehicle 클래스 상속
9
     private String name;   name 문자열 변수 선언
5 name에 Spark를 넣는다
10
     public Car(String val) {   클래스 이름과 메서드 이름이 동일한 경우
-> 해당 변수의 개체 변수를 생성할 때 자동으로 실행
-> 생성자
3 Car 생성자 호출
Spark를 val라는 문자형 변수로 받는다
11           name = super.name = val; 4 name: 9줄의 변수 name에 Spark를 넣는다
super.name: 부모클래스의 name에 Spark를 넣는다
12      }    
13      public String getName(String val) { * getName() 메서드 안에 인수가 있기 때문에
23줄에서 호출하는 getName()이 될 수 없다
14           return "Car name : " + val;    
15      }    
16     public String getName(byte[] val) { * getName() 메서드 안에 인수가 있기 때문에
23줄에서 호출하는 getName()이 될 수 없다
17           return "Car name : " + val;    
18     }    
19 }    
20 public class Test {    
21      public static void main(String[] args) { 1 실행
22           Vehicle obj = new Car("Spark"); 2 객체변수 obj 설정
Car() 메서드의 생성자를 이용하겠다
-> 형 변환
23           System.out.print(obj.getName()); 7 obj의 getName() 객체변수 호출
-> getName()의 인수가 없기 때문에 동일한 메서드를 호출해야 한다
24      }    
25 }