본문 바로가기

정보처리기사/실기기출

[정처기실기] 2023년 1회

 

https://chobopark.tistory.com/372#google_vignette

 

[2023년 1회] 정보처리기사 실기 복원 문제

안녕하세요. 2023년 1회 정보처리기사 실기 기출문제를 정리해보았습니다. 해당 복원된 기출문제가 많은 분들에게 도움이 되었으면 좋겠습니다. 정보처리기사 개편안인 2020년 시험부터 2023년 3회

chobopark.tistory.com

 


 

1. 아래 자바 코드에서 출력되는 값을 작성하시오.

 

class Static{
 
    public int a = 20;
    static int b = 0;
    
}
 
public class Main{
    public static void main(String[] args) {
        
        int a;
        a = 10;
        Static.b = a;
 
        Static st = new Static();
 
        System.out.println(Static.b++);
        System.out.println(st.b);
        System.out.println(a);
        System.out.print(st.a);
    }
}

 

더보기

 

10

11

10

20


* static 변수는 단 한 번만 생성되어 공유된다.

 

 

 

 

2. 다음 C언어의 출력값을 작성하시오.

 

#include <stdio.h>
 
int main(){
    char a[] = "Art";
    char* p = NULL;
    p = a;
 
    printf("%s\n", a);
    printf("%c\n", *p);
    printf("%c\n", *a);
    printf("%s\n", p);
 
    for(int i = 0; a[i] != '\0'; i++)
    printf("%c", a[i]);
 
}

 

더보기

 

Art 
A
A
Art
Art


(C언어에서 문자열은 포인터 / 배열로 저장)

a  =   A     r      t     \0          (문자열의 마지막에 공백값을 가짐*)

       10    11    12   13 (번지)

p = a; (a는 배열 첫번째 요소의 주소값을 가진다)

 

    printf("%s\n", a);      => 배열에 저장한 문자열 출력 (개행)
    printf("%c\n", *p);     => p의 주소값(10)이 가르키는 값 출력 (개행)
    printf("%c\n", *a);     => a의 주소값(10)이 가르키는 값 출력 (개행)
    printf("%s\n", p);      => p에 할당된 a배열의 문자열 출력 (개행)

 

 

 

 

 

3. 다음 C언어의 출력값을 작성하시오.

 

#include <stdio.h>
 
int main(){
 
    char* a = "qwer";
    char* b = "qwtety";
 
    for(int i = 0; a[i] != '\0' ; i++){
        for(int j = 0; b[j] != '\0'; j++){
            if(a[i] == b[j]) printf("%c", a[i]);
        }
    }
 
}

 

더보기

 

qwe

 

 

 

 

4. 다음 괄호안에 들어가는 용어의 Full Name 또는 약자를 작성하시오.

 

(   )은/는 비동기적인 웹 애플리케이션의 제작을 위해 JavaScript와 XML을 이용한 비동기적 정보 교환 기법이다.

(   )은/는 필요한 데이터만을 웹서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 할 수 있다. 
보통 SOAP이나 XML 기반의 웹 서비스 프로토콜이 사용되며, 웹 서버의 응답을 처리하기 위해 클라이언트 쪽에서는 자바스크립트를 쓴다.

(   )은/는 Google Map과 Google pages에서 사용한 기술에 기반하여 제작되었다.

 

더보기

 

Ajax (Asynchronous JavaScript and XML)

 

 

 

 

5. 아래 내용을 확인하여 괄호 안에 용어를 표안에 알맞는 값을 고르시오.

 

구분 내용
(   )  - 회선교환 방식과 데이터그램 방식의 장점을 결합한 통신 기술이다.

 - 처음 패킷으로 최적의 경로를 고정하고 경로가 고정되면 그 다음은 패킷으로 나누어 고속으로 전송할 수 있다.

 - 통신기술에는 ATM이 있으며, 정해진 시간 안이나 다량의 데이터를 연속으로 보낼 때 적합하다.
(   )  - 패킷교환 방식으로 동작하면서 IP 주소를 사용하는 인터넷을 의미한다.

 - 각 전송패킷을 미리 정해진 경로 없이 독립적으로 처리하여 교환하는 방식이다

 - 특정 교환기의 고장 시 모든 패킷을 잃어버리는 가상회선과 달리, 그 경로를 피해서 전송할 수 있으므로 더욱 신뢰가 가능하다.

 - 짧은 메시지의 패킷들을 전송할 때 효과적이고 재정렬 기능이 필요하다.

 

<보기>

데이터그램, 차등, 비트, 가상회선, 회선, 소켓, 시분할, 메시지

 

더보기

 

가상회선

데이터그램


 * 가상회선

 연결형 교환 방식으로, 정보 전송 전에 제어 패킷에 의해 가상 경로를 설정하여 목적지 호스트에 미리 연결 후 통신한다. 가상 경로를 미리 설정하여 송신 측에서 전송한 순서와 수신 측에 도착한 순서가 동일하며, 정해진 시간 내 또는 다량의 데이터를 연속으로 전송할 때 적합한 방식이다.

 

* 데이터그램 

비연결형 교환 방식으로, 가상 경로를 설정하지 않고 헤더에 번호를 붙여서 개별적으로 전달한다. 패킷을 수신한 라우터는 순간마다 최적의 경로를 선택하여 전송하므로, 패킷은 서로 다른 경로로 전송될 수 있다. 송신 측에서 전송한 순서와 수신 측에 도착한 순서가 다를 수 있으며, 짧은 메시지의 일시적인 전송에 적합한 방식이다.

 

 

 

 

( * 네트워크, L2TP *)

6. 아래 내용을 확인하여 알맞는 답을 작성하시오.

  • 2 계층(데이터링크 계층)에서 구현되는 터널링 기술 중 하나
  • L2F와 PPTP가 결합된 프로토콜로 VPN과 인터넷 서비스 제공자(ISP)가 이용
  • IPsec을 함께 사용하면 PPTP보다 훨씬 안전하지만 보안보다 익명화에 더 적합

 

더보기

 

L2TP (Layer 2 Tunneling Protocol)


* L2TP  : 데이터링크 계층에서 구현되는 터널링 기술. 

시스코의 L2F와 PPTP를 조합하여 만든 VPN이다. 자체적으로는 암호화 기능이 없기 때문에 보통 IPsec과 같은 보안용 프로토콜과 같이 사용한다. 기본적으로 PPTP 방식을 따르기 때문에, 서버-클라이언트 통신 방식은 유사하나 UDP 500번 포트를 사용해 통신을 한다는 점이 PPTP와 조금 다르다. 따라서 NAT방식을 사용한 방화벽에 쉽게 차단될 수 있지만, 높은 보안성과 설치 및 설정이 간단하고 빠른 속도를 가지고 있는 장점이 있다. 

 

* 터널링 (Tunneling) : 두 노드(또는 네트워크) 간 가상의 링크(VPN)를 형성하는 기법. 

 * PPTP (Point-to-Point Tunneling Protocol) : 두 노드 사이에 하나의 터널만 생성. 

 

 

 

( * 네트워크 보안 솔루션, SSH *)

7. 아래 내용에서 괄호안에 알맞는 용어를 작성하시오.

(    )  네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 그 프로토콜을 가리킨다.


(    )  보안 접속을 통한 rsh, rcp, rlogin, rexec, telnet, ftp 등을 제공하며, IP spoofing (IP스푸핑, 아이피 위/변조 기법중 하나)을 방지하기 위한 기능을 제공한다.


(    )  기본적으로 포트는 22번이다.

 

더보기

 

SSH (Secure SHell)


* SSH : 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜. 

 보안 취약점을 가지고 있는 프로토콜 등을 대체하여 사용하는 네트워크를 통한 원격 호스트 연결 과정을 보호하기 위한 프로토콜이다. 기본 네트워크 포트는 22번을 사용하며, 서로 연결되어 있는 컴퓨터 간 원격 명령실행이나 셀 서비스 등을 수행한다. 키를 통한 인증은 클라이언트의 공개키를 서버에 등록해야 하며, 전송되는 데이터는 암호화된다.


* 포트 (Port)

컴퓨터 간 상호 통신을 위해 프로토콜에서 이용하는 가상의 연결단.

 컴퓨터는 동시에 하나 이상의 프로그램을 실행하기 때문에 IP주소만으로는 특정 서비스에 접근 할 수 없으므로 포트를 사용하여 특정 서비스에 할당 될 수 있고, 원하는 서비스에 접근할 수 있다. 


20  ( FTP - 데이터 포트 )

21   ( FTP - 제어 포트 )

22   ( SSH - 원격 접속 보안 )

23   ( TELNET - 원격 접속 )

25   ( SMTP - 이메일 전송 )

80   ( HTTP - 웹 페이지 전송 )

110   ( POP3 - 이메일 수신 )

443   ( HTTPS - HTTP 암호화 전송 )

 

 

 

 

8. 아래 설명에 대한 알맞는 답을 작성하시오.

구분 내용
(   1   ) - 감염된 컴퓨터 시스템에서 스스로 복제해 다른 컴퓨터로 복사본을 확산시킬 수 있는 악성 프로그램이다.

- 독자적으로 실행되며 다른 실행 프로그램이 필요하지 않으며, 파일 전송 기능을 착취하도록 설계된다.

자가 복제 및 네트워크를 통한 전파도 가능하다.
(    2    ) 정상적인 프로그램으로 가장해 사용자가 직접 컴퓨터에 설치하도록 위장하며, 백도어를 만들어 공격자가 침입할 수 있도록 만들거나 시스템을 파괴한다.

- 정상적인 프로그램으로 위장하여 시작부터 끝까지 램에 상주하며, 시스템 내부 정보를 공격자의 컴퓨터로 빼돌리는 프로그램이다. 

- 좀비PC처럼 내부정보 유출뿐만 아니라 컨트롤까지 가능한 종류가 있고, 단순히 내부 데이터만 유출할 수 있는 타입의 트로이 목마가 있다.

- 감염된 후에 스스로를 복제하는 능력은 없다.
(    3    ) 대상(정상파일)을 감염시키는 형태로 실행되며, 감염시킬 대상이 존재하지 않을 때에는 실행되지 않으며 다른정상파일로의 자기 복제 기능이 있다.

- 컴퓨터 시스템에 침입해 프로그램에 기생하며 시스템을 변경하거나 사용할 수 없도록 만드는 악성코드이다.

- 네트워크를 통해 전파되지 않으며 방식 및 위치에 따라 여러형태로 나뉜다.

 

더보기

 

1. 웜 (Worm)

2. 트로이목마 (Trojan Horse)

3. 바이러스 (Virus)


* 웜 (Worm) : 스스로를 복제하여 네트워크를 손상시키는 악성 프로그램.

 > 독자적으로 실행되어 다른 프로그램이 필요하지 않음.

 > 네트워크를 사용하여 복제본을 스스로 전파.

 

트로이목마 (Trojan Horse) : 악성 루틴이 숨어 있는 프로그램으로, 겉보기에는 정상적인 프로그램으로 보이지만 실행하면 악성 코드를 실행하는 프로그램

 > 컴퓨터 바이러스나 웜과는 달리, 트로이 목마는 보통 다른 파일에 삽입되거나 스스로 전파되지 않는다.

 

* 바이러스 (Virus) : 스스로를 복제하여 파일을 손상시키는 악성 프로그램. 

 > 다른 실행 프로그램에 기생하여 실행.

 > CD, USB드라이버 등을 통해 전파 => 스스로 전파 불가능.

 

 

 

 

 

9. 다음 아래 코드에서 이진수를 십진수로 변환하는 코드에 대해 괄호 (a) (b) 의 적합한 답을 작성하시오.

 

#include <stdio.h>
 
int main() {
 
    int input = 101110;
    int di = 1;
    int sum = 0;
 
    while (1) {
 
        if (input == 0) break
        else {
 
          sum = sum + (input (a)(b)) * di;
             di = di * 2;
             input = input / 10;
 
        }
    }
 
    printf("%d", sum);
 
    return 0;
}

 

더보기

 

(a) %

(b) 2 (or 10  or  5)

 

 

 

 

10. 다음 보안 관련 설명으로 괄호안에 알맞는 용어를  작성하시오.

 

(    )은/는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이다.


(    ) 프로토콜은 보통 다른 호스트나 게이트웨이 와 연결된 네트웍에 문제가 있는지 확인하기 위한 목적으로 주로 사용된다.


(    ) 을/를 이용한 공격에는 (    ) Flooding가 있는데 ping 명령어를 통한 (     ) 패킷을 연속적으로 계속 보내어 서버의 요청에 응답으로 인한 다른작업을 하지 못하도록 하는 공격이다.

( 인터넷 환경에서 오류에 관한 처리를 지원하는 용도로 사용되는 프로토콜이다. 이 프로토콜에 의해 발생되는 주요 메시지 중 ECHO REQUEST, ECHO REPLY는 유닉스의 ping 프로그램에서 네트워크의 신뢰성을 검증하기 위하여 ECHO REQUEST 메시지를 전송하고, 이를 수신한 호스트에서는 ECHO REPLY를 전송해 응답한다. 그리고 죽음의 핑(Ping of Death Aattack), 스머프 공격(Smurf Attack)에 사용한다. 

 

더보기

 

ICMP (Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)


* ICMP (Internet Control Message Protocol)

 TCP/IP 에서 신뢰성 없는 IP를 대신하여 송신측으로 네트워크의 IP 상태 및 에러 메시지를 전달해주는 프로토콜.

 > 서버와 게이트웨이 사이에서 메시지를 제어하고 알려주는 프로토콜.

 

* 죽음의 핑 (Ping of Death)

인터넷 프로토콜 허용 범위(65,536 바이트) 이상의 큰 패킷을 고의로 전송하여 발생한 서비스 거부(DoS) 공격.

* Ping (Packet Internet Groper) : 다른 호스트 IP 데이터그램 도달 여부를 조사하기 위한 프로그램.

> 서버 정상 여부 확인.

 

* 스머프 공격 (스머핑, Smurfing, Ping 홍수, Ping Flood)

고성능 컴퓨터를 이용해 초당 엄청난 양의 접속신호를 한 사이트에 집중적으로 보냄으로써 상대 컴퓨터의 서버를 접속 불능 상태로 만들어 버리는 해킹 수법 (IP, ICMP 특성 악용)

 > ICMP 패킷을 말 그대로 홍수처럼 상대컴퓨터 시스템에 퍼붓는 방식. 

 

 

 

 

11. 다음은 디자인 패턴에 관한 설명이다. 설명에 내용에 알맞는 답을 고르시오.

 

- 다른 무언가와 이어지는 인터페이스 역할을 하는 클래스를 의미한다.


- 실제 객체를 호출하면 행위를 중간에 가로채서 다른 동작을 수행하는 객체로 변경한다.


- 객체를 정교하게 제어해야 하거나 객체 참조가 필요한 경우 사용한다.


- 분리된 객체를 위임함으로써 대리 작업을 중간 단계에 삽입할 수도 있으며 분리된 객체를 동적으로 연결함으로써 객체의 실행 시점을 관리할 수도 있다.

( 특정 객체에 대한 접근을 제어하거나 기능을 추가할 수 있는 디자인 패턴으로, 객체의 대리자를 이용하여 원래 객체의 작업을 대신 처리하는 방식이다. 즉, 어떤 객체를 사용하려고 할 때, 객체를 직접 참조하는 것이 아니라 해당 객체에 대응하는 일종의 대리자 역할을 하는 객체를 통해서 대상에 접근하는 방식으로 직접 참조하려던 객체가 메모리에 존재하지 않아도 기본적인 정보 참조나 실제 사용 시점까지 생성 시점을 미루는 등의 행위가 가능해진다. )

 

<보기>

Builder, Bridge, Observer, Singleton, Memento, Decorater, Mediator, Abstract Factory, Proxy, Visitor

 

더보기

 

proxy


* Builder (빌더)

생성 단계를 캡슐화 하여 구축 공정을 동일하게 이용하도록 하는 패턴.

* Bridge (브리지)

구현부에서 추상층을 분리하여 각자 독립적으로 확장할 수 있게 하여 결합도를 낮춘 패턴.

* Observer (옵저버)

한 객체의 상태 변화가 일어났을 때, 그 객체에 의존(상속)하는 다른 객체들에게 알리고, 자동으로 내용이 갱신되는 방식으로 일대다(One-To-Many) 의존성을 가지는 패턴.

 

 

 

 

12. 다음은 데이터베이스에 관련된 내용이다. 각 괄호안에 알맞는 답을 작성하시오.

 

구분 내용
(   1   ) - 셀 수 있는 수량의 순서 있는 열거이다.

- 어떤 요소의 집합, 혹은 테이블에서의 행을 가리키지만 일반적인 집합과는 달리 중복이 허용될 수 있다.

- 리스트와 동일하게 여러 객체를 모아서 담으며, 숫자, 문자, 객체, 배열, 튜플 안의 튜플 전부 가능하다.
(   2   ) - 어느 한 시점에 릴레이션의 내용(상태), 즉 저장된 데이터 전체를 의미한다.

- 단순히 릴레이션 또는 릴레이션 외연(Relation Extension)라고도 한다.
(   3   ) - 특정 데이터 집합의 유니크(Unique)한 값의 개수이다.

- 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표이다.

 

<보기>

릴레이션 인스턴스, 도메인, 튜플, 차수, 릴레이션 스키마, 카디널리티

 

더보기

 

(1) 튜플

(2) 릴레이션 인스턴스

(3) 카디널리티


 

* 릴레이션 인스턴스 (Relation Instance, 외연) : 튜플들의 집합. (릴레이션 실제값)

* 도메인 (Domain) : 한 속성에 나타날 수 있는 값들의 범위.

* 튜플 (Tuple) : 행 (Row).

* 차수 (Degree) : 속성들의 수.

* 릴레이션 스키마 (Relation Schema, 내연) : 속성 이름들. (릴레이션 틀, 구조)

* 카디널리티 (Cardinality) : 튜플들의 수.

 

 

 

 

 

13. [학생] 테이블에서 학생 이름이 '민수'인 튜플을 삭제하는 쿼리를 작성하시오.

 

조건
- 컬럼의 값이 문자열일 경우 작은 따움표 ('  ')를 표시하시오.
- SQL 마지막에 세미콜론(;)은 표기하지 않아도 관계 없습니다.

 

더보기

 

Delete from '학생' where '이름' = '민수'

 

 

 

 

13. 다음 코드에서 괄호안에 알맞는 값을 변수명으로 작성하시오. (C언어)

 

public class Sort {
 
    public static void swap(int[] arr, int idx1, int idx2){
        int temp = arr[idx1];
        arr[idx1] = arr[idx2];
        arr[( 1 )] = temp;
    }
 
    public static void Usort(int[] array, int length){
        for (int i = 0; i < length; i++) {
            for (int j = 0; j < length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    swap(array, j, j + 1);
                }
            }
        }
    }
 
    public static void main(String[] args) {
        int[] item = new int[] { 5, 3, 8, 1, 2, 7 };
        int nx = 6;   
        Usort(item, ( 2 ));
 
        for (int data : item) {
            System.out.print(data + " ");
        }
    }
 
}

 

더보기

 

(1) idx2

(2) nx


버블정렬 

 

 

 

 

15. 다음 파이썬 코드의 알맞는 출력값을 작성하시오.

a = {'한국', '중국', '일본'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update({'홍콩', '한국', '태국'})
print(a)

 

더보기

 

{'한국', '중국', '베트남', '홍콩', '태국'}  (순서 상관x)


* 집합(Set) : 중괄호 { } 를 사용한 자료형으로 순서가 없고, 중복이 불가능하다.

 

 

 

 

16. 다음 표와 SQL의 결과를 확인하여 SQL을 작성하시오.

 

 

조건
- where사용하지 말하야 한다.
- SELECT절에 별칭을 사용하여 작성해야 한다.
- SQL 구문 마지막에 세미콜론 생락 가능하다.
- 반드시 GROUP BY와 having을 사용해야 한다.
- 집계함수를 사용해야 한다.

 

더보기

 

SELECT '과목이름'
      , Min(점수) as '최소점수'
      , Max(점수) as '최대점수'
FROM '성적'
GROUP BY '과목이름' 
HAVING AVG(점수) >= 90

 

 

 

 

 

17. 다음 JAVA 코드에서 알맞는 출력 값을 작성하시오.

 

abstact class Vehicle {
 
    String name;
    abstract public String getName(String val);
 
    public String getName() {
            return "Vehicle name: " + name;
    }
}
 
 
 
class Car extends Vehicle {
 
    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 Main {
 
    public static void main(String[] args) {
 
    Vehicle obj = new Car("Spark");
    System.out.println(obj.getName());
 
    }
}

 

더보기

 

Vehicle name: Spark


=> 호출한 함수에 매개변수가 없으므로, 매개변수가 없는 부모클래스 Vehicle의 getName() 메소드 호출. 

 

* 오버로딩 (Overloading)

하나의 클래스 내에서 같은 이름으로 여러 개의 메소드를 정의하는 과정.

 

 

 

 

 

18. 다음은 스키마와 관련된 내용이다. 각 괄호안에 알맞는 답을 작성하시오.

 

구분 내용
(   1   ) 스키마 - 사용자나 응용 프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조를 정의한다.
- 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있기 때문에 서브 스키마라고도 한다.
- 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있다.
- 하나의 외부 스키마를 여러개의 응용 프로그램 혹은 사용자가 공유할 수 있다.
(   2   ) 스키마 데이터베이스의 전체적인 논리적 구조로, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
개체 간의 관계(Relationship)와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다.
- 데이터베이스 파일에 저장되는 데이터의 형태를 나타내는 것이다.
- 기관이나 조직체의 관점에서 데이터베이스를 정의한 것이다
(   3   ) 스키마 - 물리적인 저장장치 입장에서 데이터가 저장되는 방법을 기술한 것이다.
- 실제 데이터베이스에 저장될 레코드의 물리적인 구조를 정의한다. 
- 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서, 인덱스 유/무 등을 나타낸다.
- 시스템 프로그래머나 시스템 설계자가 관리한다.

 

더보기

 

(1) 외부

(2) 개념

(3) 내부


 

* 외부 스키마 (External Schema)

 사용자의 관점에서 데이터베이스를 보여주는 스키마. 여러 사용자 뷰(User View)로 구성.

 사용자가 실제로 접근하는 데이터의 형태를 정의.

 

* 개념 스키마 (Conceptual Schema)

  데이터베이스의 전체적인 구조 정의. 데이터와 그 관계에 대한 모든 정보 포함.

 (논리 스키마 : 데이터베이스의 구조를 논리적으로 표현, 개념 스키마의 일부)

 

* 내부 스키마 (Internal Schema)

  데이터베이스가 데이터를 실제로 어떻게 저장하는지에 대한 스키마. 

  물리적인 데이터 저장 세부사항을 정의 (파일 구조, 인덱스 액세스 경로)   _ 물리 스키마

 

 

 

 

 

19. 다음 아래 제어 흐름 그래프가 분기 커버리지를 만족하기 위한 테스팅 순서를 쓰시오.

 

 

 

더보기

 

1234561

1234567

124567

124561


 

* 분기(결정, Decision) 커버리지 : 결정 포인트 내의 모든 분기문(조건문)에 대해 수행.

 

 

 

 

 

20. 다음 자바 코드에 대한 출력 값을 작성하시오.

 

class Parent {
    int x = 100;
 
    Parent() {
        this(500);
    }
 
    Parent(int x) {
        this.x = x;
    }
 
    int getX() {
        return x;
    }
}
 
class Child extends Parent {
    int x = 4000;
    
    Child() {
        this(5000);
    }
 
    Child(int x) {
        this.x = x;
    }
}
 
public class Main {
    public static void main(String[] args) {
        Child obj = new Child();
        System.out.println(obj.getX());
    }
}

 

더보기

 

500


* 생성자 (Constructor)

객체 생성 시 초기화 작업을 위한 일종의 함수.

 > 객체가 처음 생성될 때 반드시 호출되고, 제일 먼저 실행된다.

 > 반드시 클래스명과 동일하게 정의해야 하며, 반환 값이 없다.

 > 생성자도 오버로딩 가능. 


 

Child obj = new Child(); 객체를 생성하면

1. Child() 생성자 호출 => this(5000) (자기자신) 호출.

* 그전에 부모클래스의 생성 Parent() 먼저 호출 * ( 'super()' 가 생략되어 있다고 이해하기)

=> 상속 관계에서 하위(자식, 서브) 객체를 생성하면, 상위(부모, 슈퍼) 객체도 생성된다.

2. Parent() 호출 => this(500) (자기자신) 호출. 

3. Parent(int x) 호출 => this.x = x (자기자신의 x값에 param값을 할당 => obj.x값에 500을 할당.) 

4. Child(int x) 호출 => this.x = x (자기자신의 x값에 param값을 할당 => obj.x값에 5000을 할당.)

 

5. obj.getX() 실행 => 자식 클래스에 없으니 부모클래스의 int getX() 호출.

6. int getX() => return this.x => 500

 

 

 


 

https://www.youtube.com/watch?v=uN0Y8aj2QDE

 

 

'정보처리기사 > 실기기출' 카테고리의 다른 글

[정처기실기] 2023년 3회  (0) 2024.04.18
[정처기실기] 2023년 2회  (0) 2024.04.14
[정처기실기] 2022년 3회  (0) 2024.04.01
[정처기실기] 2022년 2회 *  (0) 2024.03.24
[정처기실기] 2022년 1회  (0) 2024.03.16