본문 바로가기

반응형

전체 글

Chpt 7. 객체 지향 프로그래밍 2 - 주제 2. 오버라이딩, 참조변수 super, 생성자 super() 1. 오버라이딩 조상의 메서드를 자손에 맞게 변경하는 것을 오버라이딩이라고 한다. 오버라이딩의 사전적 의미는 덮어쓰다이다. 오버라이딩의 조건은 다음과 같다. (1) 선언부가 조상 클래스의 메서드와 같다. (2) 접근 제어자 범위: 조상 클래스의 메서드 = 자손 클래스의 메서드 선언부는 반환 타입, 메서드 이름, 매개변수를 포함한다. (3)에서 단순히 개수가 중요한 것이 아니라 예외의 상속 관계 또한 중요하다. 예를 들어 조상의 메서드에서 IOException, SQLException을 throw 한다고 했을 때, 자손의 메서드에서 Exception을 throw 하면 Exception은 모든 예외의 최고 조상이므로 조상보다 많은 예외를 던지는 것이다. [참고 1] 조상의 static 메서드를 자손에서 정의.. 더보기
우아한테크코스 6기 프리코스 1주차 1. GitHub (진행 가이드 정리) 처음에 미션 저장소 GitHub 링크에 있는 READ.md 파일을 보고 살짝 당황했다. 어디선가 본 적이 있는 문제였기 때문이었다. 하지만 안내문에 나와있던 문구를 보고는 금방 이해가 됐다. 1주 차 미션은 개발 환경을 세팅하고, GitHub에 과제를 제출하는 등 미션 외에도 추가로 익혀야 하는 부분들이 있어 가벼운 미션으로 준비했어요. 저희는 가볍다고 생각하는데 여러분은 어떻게 느낄지 모르겠네요. 앞으로 갈수록 조금씩 난도가 높아지도록 설계했어요. 우선 안내문 "프리코스 진행 방식 - 미션 제출 방법 - GitHub을 활용한 제출 방법은 문서를 참고해 제출한다."에 있는 문서 링크 중 진행 가이드 부분을 차근히 읽어보았다. GitHub에 대해 잘 알고 있었다고 생.. 더보기
Chpt 7. 객체 지향 프로그래밍 2 - 주제 1. 클래스 간의 관계 - 상속, 포함 클래스 간의 관계 맺기도 결국 객체 지향의 장점을 살리는 방법 중 하나이다. 1. 상속 1) 정의와 방법 상속이란 기존의 클래스를 사용해 새로운 클래스 작성하는 것이다. 상속 받고 싶은 클래스 이름 옆에 extends 상속 받을 클래스 이름을 다음과 같이 적으면 된다. 이때, 상속 받고 싶은 클래스를 자손 (Child) 클래스, 상속 받을 클래스를 부모 (Parent) 클래스라고 한다. class Parent {} class Child extends Parent {} 2) 특징 상속에는 다음과 같은 특징이 있다. (1) 자손 클래스는 부모 클래스의 생성자와 초기화 블록을 제외한 모든 멤버를 상속 받는다. (2) 멤버의 개수: 자손 클래스 >= 부모 클래스 (3) 단일 상속만 허용한다. (4) 자손 클래스.. 더보기
Chpt 6. 객체 지향 프로그래밍 - 주제 6. 멤버, 지역 변수의 초기화 1. 멤버, 지역 변수의 초기화의 차이 멤버 변수 (cv, iv) (기본값으로) 자동 초기화 => 선택적 지역 변수 (lv) 수동 초기화 => 필수적 이때 자동 초기화되는 기본값은 0과 관련된 값이라고 생각하면 된다. 지역 변수는 수동으로 초기화이기 때문에 반드시 사용 전 초기화를 해주어야 한다. 2. 멤버 변수 초기화 순서 static 변수 (한 번만) 인스턴스 변수 (인스턴스 생성될 때마다) (1) 자동 초기화 (2) 간단 초기화 (=) (3) 복잡 초기화 (static {}) (4) 자동 초기화 (5) 간단 초기화 (=) (6) 복잡 초기화 ((6-1) {}, (6-2) 생성자) 인스턴스 변수의 복잡 초기화에서 인스턴스 초기화 블럭 {}은 잘 사용되지 않는다. [참고 1] 간단 초기화는 명시적 초기.. 더보기
Chpt 6. 객체 지향 프로그래밍 - 주제 5. 생성자는 변수 초기화 메서드이다. 1. 오버로딩 (Overloading) 원래 메서드와 메서드 이름의 관계는 일대일이지만 필요에 따라 일대다의 관계도 가능하다. 이를 오버로딩 말 그대로 메서드에 다른 이름들을 쌓은 형태라 생각하면 된다. 오버로딩의 대표적인 예는 println 메서드이다. 다음은 오버로딩의 조건이다. (1) 메서드 이름이 같다. (2) 매개변수의 이름은 관계 없고, 개수 또는 타입이 달라야 한다. (3) 반환 타입은 관계 없다. (4) 매개변수의 개수와 타입 종류의 개수가 같은 경우 위치가 달라야 한다. 아래 [예 1]은 (4)를 보여주는 예시다. [예 1] long add(int a, long b) { return a + b; } long add(long a, int b) { return a + b; } 위와 같은 경우.. 더보기
Chpt 6. 객체 지향 프로그래밍 - 주제 4. 메서드에는 static과 인스턴스 메서드가 있다. 1. static (클래스) vs. 인스턴스 메서드 메서드 종류 객체 생성 필요 인스턴스 멤버와 관련된 작업 인스턴스 멤버 사용 가능 여부 사용 방법 인스턴스 메서드 (메서드이름) O O O 참조 변수.메서드 이름 static 메서드 (static + 메서드이름) X X X 클래스 이름.메서드 이름 인스턴스 메서드는 인스턴스 멤버와 관련된 작업을 하는 메서드이다. 그렇기 때문에 객체 생성이 꼭 필요한 것이다. 반대로 static 메서드는 객체를 생성하지 않아도 사용 가능하다. static 메서드 사용 시점에 객체가 생성되지 않았을 경우 인스턴스 멤버들은 사용 불가하기 때문에 static 메서드는 인스턴스 멤버를 사용할 수 없는 것이다. 위 표에서 2-4번째 열이 모두 연관 있음을 알아두자. [참고] 멤버.. 더보기
Chpt 6. 객체 지향 프로그래밍 - 주제 3. 매개변수와 반환타입 1. 호출 스택 (Call stack) 호출 스택은 위가 뚫린 상자 모양의 메모리라 생각하면 된다. 메서드가 호출되면 호출 스택에 메서드 실행을 위한 공간이 스택(책) 형식으로 쌓이며, 실행이 끝나면 반환값을 아래 메서드에게 주며 비워진다. 이때, 스택이 2개 이상이면 최상단 스택만 실행 중이며 밑에 있는 모든 스택은 대기 중이다. 그리고 실행 중인 메서드 스택 바로 밑 스택의 메서드가 실행 중인 메서드를 호출한 것이다. 정리하면 다음과 같다. (1) 메서드가 호출되면 메모리를 스택에 할당 받는다. (2) 메서드가 종료되면 할당 받은 메모리를 반환, 스택에서 제거된다. (3) 최상단 메서드만 실행 중이다. (4) 메서드 바로 밑 메서드가 그 위 메서드를 호출한 것이다. [참고] 힙 영역은 인스턴스 멤버,.. 더보기
Chpt 6. 객체 지향 프로그래밍 - 주제 2. 클래스는 변수와 메서드의 묶음이다. 1. 변수 1) 변수의 종류 앞서 변수의 타입에는 기본형 8가지와 그 외 참조형이 있다는 것을 배웠다. 변수의 종류는 선언 위치에 따라 3가지로 구분한다. 변수를 선언할 때 변수의 범위를 최대한 좁히는 것이 좋다. 변수의 종류 선언 위치 사용 방법 사용 가능 시점 인스턴스 변수 (iv) 클래스 영역 참조형 변수.인스턴스 변수 객체 생성 이후 클래스 변수 (static + iv) 클래스 이름.클래스 변수 메모리에 로딩 될 때 = 객체 생성 이전 (항상) 지역 변수 (lv) 메서드 영역 지역 변수 메서드 호출 시 클래스 내 영역 중 메서드 영역은 메서드의 선언부, 구현부이고 그 외 영역은 모두 클래스 영역이다. 따라서 메서드의 매개변수 또한 지역 변수이며 이는 나중에 설명하도록 하겠다. 위 표는 외우도록 하.. 더보기

반응형