목록전체 글 (77)
AiPE
객체지향의 핵심 개념 중의 하나인 상속(Inheritance)에 대해 알아보자. 1. 상속(Inheritance)이란? Java에서는 하나의 클래스가 존재할 때, 이 클래스의 속성(변수와 메서드)를 다른 클래스에서 그대로 물려받아 사용할 수 있다. 이렇게 하나의 클래스가 다른 클래스에게 자신의 속성을 물려주는 행위 자체를 상속이라고 부른다. 상속을 해주는 클래스를 부모 클래스, 상속을 받는 클래스를 자식 클래스라고 부른다. 부모 클래스가 더 큰 집합이므로, 자식 클래스는 부모 클래스의 모든 속성을 일단 그대로 물려받는다. 단, 자식 클래스는 부모 클래스가 가지지 못하는 속성을 추가하여 사용할 수 있다. 그렇다면 상속이 왜 객체지향의 핵심적인 특성이며, 코드를 효율적으로 해 주는 장치일까? 이를 알아보기 ..
클래스와 객체, 인스턴스의 경우 용어의 정의가 꽤나 헷갈린다. 보통 클래스와 객체를 붕어빵 틀과 붕어빵에 많이들 비유를 하는데, 엄밀히 말하면 이 설명은 오류가 있다. 이 비유를 기반으로 생각을 이어나가다보면 분명 오류를 만나게 되므로, 이 비유는 사용하지 않는 것이 좋다. 따라서 이 포스팅에서는 붕어빵, 붕어빵 틀 대신 다른 적절한 비유를 사용했다. 위 비유가 왜 틀렸는지에 대해서는 이 포스트를 맨 아래로 내려 "3. 참고자료"의 첫번째 글을 참고하자. 다른 분의 포스팅인데, 설명이 명쾌해서 가져와보았다. 또한 객체와 인스턴스의 경우 두 개의 용어를 혼용한다고 알려져 있는데, 엄밀히 말하면 둘은 서로 다르다. 사람들이 제대로 구분할 줄을 모르기 때문에 (혹은 의사소통의 편의상) 혼용하는 것이다. 비슷하..
break와 contine는 모두 루프를 제어하는 데 사용되는 키워드이다. break continue ① 주로 반복문 루프 (for, while, do while 등) 내에서 사용 ② break문을 만나면 그 반복문을 완전히 종료하고 해당 블록을 빠져나옴 ③ 특정 조건을 만족할 때 반복문을 종료하고 싶은 경우 사용 ① 주로 반복문 루프 (for, while, do while 등) 내에서 사용 ② continue문을 만나면 루프의 나머지 부분을 건너뛰고 (실행하지 않고) 다음 반복으로 넘어감 ③ 특정 조건을 만족할 때 해당 반복문을 건너뛰고 싶은 경우 사용 break문은 반복문을 완전히 종료하고 나오도록 만들 때 사용하는 반면, continue문은 현재 반복을 1회 건너뛰고 다음 반복으로 이동하는 데 사용..
switch-case문이 무엇인지에 대해 먼저 알아보자. switch-case문은 조건에 따라 행동이 달라지는, 조건 분기를 처리할 때 사용한다. 즉, " 특정 조건을 만족할 때는 A를 하고, 다른 조건을 만족할 때는 B를, 내가 기술한 조건 중 해당하는 것이 없으면 default를 실행해라 " 라고 명령하는 것과 같다. 이를 코드로 구현하면 다음과 같다. switch (something) { case value1: // 코드 작성 break; case value2: // 코드 작성 break; default: //코드 작성 break; } 위 코드는 switch-case문의 가장 기본적인 구조이다. switch 뒤의 괄호에 있는 something이 각 case 옆의 value와 일치하면 해당 case가..
명시적 형 변환(Explicit Type Conversion)과 묵시적 형 변환(Implicit Type Conversion)은 데이터 유형을 다른 형식으로 변환할 때의 두 가지 방법이다. 정수 데이터를 소수(float)데이터로 변환하는 등, 데이터의 형식을 바꾸는 것을 "형 변환"이라고 한다. 간단하게 말하면, 형 변환을 개발자가 직접 코드를 통해 하면 명시적 형 변환, 프로그래밍 언어가 자동으로 변환해주면 묵시적 형 변환에 해당한다. 간단하게 특징을 정리해보고 구체적인 예시를 통해 확실히 이해하여 보자. 명시적 형 변환 (Explicit Type Conversion) 묵시적 형 변환 (Implicit Type Conversion) 1. 개발자가 직접 데이터의 형식을 변환 2. 형식이 서로 다른 데이터..
다른 포스팅을 보고 상수와 리터럴이 대충 뭔지는 알겠으나, 1. 상수가 메모리의 주소라는게 무슨 말인가? 2. 그래서 프로그래밍에서 "상수"라는 것과 리터럴, 변수는 어떻게 구분하는가? 집합관계가 어떻게 되는가? 맥락 설명을 생략하고 결론만 빠르게 알고 싶다면 노란색으로 하이라이트 된 챕터 3. 상수와 리터럴의 명확한 정의와 구분으로 바로 넘어가도록 하자. 1. 상수(constant)란? 수학적으로 상수(constant)란 "변하지 않는 수"를 의미한다. 프로그래밍에서의 상수(constant)는 수학적인 정의의 상수와는 조금 다른 개념을 가진다. 프로그래밍에서의 상수는 "값을 저장할 수 있는 공간"의 의미를 가진다. 그 이유가 무엇인지를 납득하기 위해서는 "변수"의 정의를 먼저 살펴보아야 한다. Q. 변..