본문 바로가기

분류 전체보기

(30)
[Java] 다형성 다형성 조상 클래스 타입의 참조 변수로 자손 클래스의 인스턴스를 참조할 수 있다. Tv클래스와 이를 상속받는 CaptionTv클래스가 존재한다고 가정하자. CaptionTv cap1 = new CaptionTv(); Tv cap2 = new CaptionTv(); // 자손 인스턴스를 부모 클래스 참조변수에 할당하였다 둘의 차이점은, cap1의 경우 CaptionTv클래스의 모든 변수와 메소드를 사용할 수 있지만, Tv 참조 변수에 담긴 cap2는 Tv클래스에 담긴 변수와 메소드만 사용할 수 있다. 이러한 다형성은, 매개변수로 클래스의 타입을 넘겨줄 때와 배열을 생성할 때 유용하게 사용된다. 참조변수가 사용 가능한 멤버의 개수는 인스턴스의 멤버 개수보다 같거나 적어야 하므로, 반대의 경우는 사용할 수 없..
[python] 프로그래머스 - 숫자 야구 문제 설명 숫자 야구 게임이란 2명이 서로가 생각한 숫자를 맞추는 게임입니다. 각자 서로 다른 1~9까지 3자리 임의의 숫자를 정한 뒤 서로에게 3자리의 숫자를 불러서 결과를 확인합니다. 그리고 그 결과를 토대로 상대가 정한 숫자를 예상한 뒤 맞힙니다. * 숫자는 맞지만, 위치가 틀렸을 때는 볼 * 숫자와 위치가 모두 맞을 때는 스트라이크 * 숫자와 위치가 모두 틀렸을 때는 아웃 예를 들어, 아래의 경우가 있으면, A : 123 B : 1 스트라이크 1 볼. A : 356 B : 1 스트라이크 0 볼. A : 327 B : 2 스트라이크 0 볼. A : 489 B : 0 스트라이크 1 볼. 이때 가능한 답은 324와 328 두 가지입니다. 질문한 세 자리의 수, 스트라이크의 수, 볼의 수를 담은 2차원 ..
[Java] 자바의 제어자 제어자 자바에는 다양한 제어자가 있다. 처음 배울 땐 그렇구나 하고 넘어가는데, 다 배우고 나니 추상, final, 접근 제어자 등.. 헷갈리기 시작한다. 익숙해지면 헷갈리지 않겠지만 자바에만 시간을 쏟는 게 아니다 보니 다른 언어를 하다 보면 까먹게 될 것 같아서 정리해본다. 우선 접근제어 자부터 살펴보자. 접근제어자 접근제어자에는 public과 private만이 있는 게 아니다! 제어자 이름 같은 클래스 같은 패키지 자손 클래스 모두 public O O O O protected O O O default O O private O 까먹을 것 같을 때 종종 보도록 하자. protected의 경우 자손클래스 까지만 접근이 가능하다는 것과, 접근제어자를 붙이지 않은 default의 경우 같은 클래스와 같은 패..
[Java] 패키지와 import Package와 Import 패키지 관련된 클래스들을 관리하기 위해 묶어 놓은 것이다. 클래스의 이름이 같아도 다른 패키지에 속하면 패키지 명으로 구분이 가능하므로 충돌을 피할 수 있다. 클래스가 하나의 ".class" 파일인 것과 같이 패키지는 하나의 물리적인 디렉토리이다. 소스 파일의 첫 번째 줄에 선언되어야 하며 모든 클래스는 하나의 패키지에 속해야 한다. 클래스와의 혼동을 막기 위해 패키지는 소문자로 이름을 짓는 것이 일반적이다. 패키지도 다른 패키지를 포함하는 게 가능하며 "."으로 구분된다. 소스파일 작성 시 패키지 선언을 하지 않을 경우 자동으로 unamed package에 속하게 된다. 패키지를 생성한 뒤에는 패키지 루트 디렉토리를 클래스 패스에 포함시키는 것을 잊지 말자! import 문..
[Java] 오버라이딩 오버라이딩 자바 질문 중에 단골로 나오는 오버로딩과 오버라이딩.. 오버라이딩은 저번에 공부를 했으니 오버라이딩을 공부해보았다. 기억하기 쉽게 오버로딩과 오버라이딩의 차이도 적어놨다. 그리고 상속에서 다루지 못한 super가 책에 함께 언급되어 같이 적어보았다. 이 두 개밖에 없어서 오늘의 공부 필기는 다른 포스팅에 비해 분량이 적을 것 같다. 오버라이딩은 상속받은 메소드의 내용을 변경하는 것이다. 부모 클래스에 존재하던 메소드가 현재 클래스에 맞지 않는 경우 재정의가 가능하다. 오버라이딩은 메소드의 내용만 새로 작성하는 것으로 조건이 몇 가지 존재하는데, 선언부(이름, 매개변수, 리턴 타입)가 같아야 한다. 접근 제어자(public, private 등)를 좁은 범위로 변경할 수 없다. 메소드의 인스턴스와..
[Java] 자바의 상속 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 자손이 되는 클래스는 부모 클래스의 모든 멤버를 상속받는다. 자손 클래스는 조상 클래스의 모든 멤버를 상속받으므로 항상 조상 클래스보다 같거나 많은 멤버를 갖는다. 상속의 상속을 거듭할수록 멤버 개수는 늘어난다. 생성자와 초기화 블럭은 상속되지 않는다. 상속을 통해 코드를 한 곳에서 관리함으로써 코드의 중복을 줄일 수 있다. 포함관계 및 관계설정 클래스의 멤버 변수로 다른 클래스 타입의 참조 변수를 선언하는 것이다. 다른 클래스 타입의 참조 변수를 멤버로 사용하는 것일 뿐, 내부에 클래스를 새로 정의한 것은 아니기 때문에 내부 클래스와는 다르다! class Circle { int point = new Point(); // Point 클래스를 포..
[JS] fetch API (no jQuery) 오늘 새벽 간단한 웹 문제를 풀다가 생각지도 못하게 당황하는 일이 발생했다.. html과 js만을 가지고 서버에 요청을 보내보는 것이었는데, 그동안 프론트 공부를 종종 해보긴 했지만 html과 js파일만으로 서버에 요청을 보내는 건 한 번도 해본 적이 없었기 때문에... 프레임 워크에 잘 만들어져 있는 모듈을 많이 쓰다 보니 더 애를 먹은 것 같다. 소개할 API는 fetch API다. fetch API의 존재를 알면 간단해진다. 형태는 아래와 같다. function submit () { fetch('/submit', { method: 'POST', // http 메소드 headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ check..
[python] 프로그래머스 - 타겟 넘버 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다. ..