반응형

전체 글 90

12. 상속

어떤 클래스 A의 field와 method를 어떤 클래스 B에게 상속해주면 클래스 B에서는 아무 제약없이 클래스 A에 있는 field와 method를 가져다 쓸 수 있다. 이런 관계를 상속관계라 부르며 A를 상위 클래스, B를 하위 클래스라고 부른다. 상속의 장점은 2가지가 있다. 하나는 코드의 중복이 감소한다는 것이고, 또 하나는 부모 클래스의 수정으로 모든 자식 클래스의 수정 효과를 볼 수 있다는 것이다. 사용 키워드는 extends로, 다음과 같다. public class B extends A{ ... } 단, 접근제한자가 private인 field와 method는 상속 대상에서 제외된다. 또한 부모, 자식 클래스가 서로 다른 패키지에 있다면 접근제한자가 default인 field와 method도 ..

간단 지식/Java 2020.06.25

11. Getter & Setter

OOP에서는 외부에서 객체 내부 data에 직접적으로 접근하는 것을 막는다. 이는 무결성을 깨지 않기 위함이다. 대신 메소드를 이용한 data 변경과 설정을 대안으로 두었다. 그게 바로 Getter와 Setter이다. Getter data read을 위해 메소드 이용 메소드로 필드값을 가공 후 전달 Setter data write를 위해 메소드 이용 메소드가 매개값을 검증 후 유효한 값만 수신 아래 코드는 Getter와 Setter의 예시이다. public class School{ private String name; private int num; public String getName(){ return name; } public int setNum(int name){ this.num = num + 10..

간단 지식/Java 2020.06.22

10. 접근제한자(public, protected, default, private)와 싱글톤

여러 패키지, 클래스를 이용한 프로그래밍을 하다보면 클래스 외부로부터의 접근을 제한할 필요가 느껴진다. 이 문제를 해결해주는건 바로 접근제한자들이다. 접근제한자 적용가능한 대상 외부에서 접근가능한 클래스 범위 외부에서 호출가능한 생성자 범위 public 클래스, 필드, 생성자, 메소드 모든 외부에서 접근 가능 모든 패키지에서 호출 가능 protected 필드, 생성자, 메소드 같은 패키지의 클래스 또는 자식클래스에서만 접근 가능 같은 패키지의 클래스 또는 자식클래스에서만 호출 가능 default 클래스, 필드, 생성자, 메소드 같은 패키지인 클래스에서만 접근가능 같은 패키지의 클래스에서만 호출가능 private 필드, 생성자, 메소드 모든 외부에서 접근 불가능 외부에서 객체 생성 불가능 클래스에 적용가능..

간단 지식/Java 2020.06.21

09. Package와 import

아직 대형 프로젝트를 접할 일이 없는 학부생이어서 그런지 패키지를 본격적으로 사용해본적은 없다. 패키지는 상위/하위 패키지 형식으로 조직될 수 있으며 패키지의 클래스의 이름은 상위패키지이름.하위패키지이름.class가 된다. 같은 패키지 내부에서는 아무 조건 없이 다른 클래스의 필드와 메소드를 가져다 사용할 수 있다. 하지만 다른 패키지의 입장에서 보면 얘기가 달라진다. 이름이 A인 패키지와 이름이 B인 패키지가 있다고 가정해보자. B 패키지에서 A 패키지의 Test클래스에 선언된 필드와 메소드를 사용하려면 어떻게 해야할까? 방법은 2가지가 있다. 1. 패키지 객체 생성 -> A.Test.필드명 = new A(); 2. import 사용 -> import A.Test; or import.A *; 이후 클래..

간단 지식/Java 2020.06.21

08. 정적멤버(static)와 final필드와 상수

정적 멤버란, 클래스에 고정된 멤버로 객체를 생성하지 않고도 사용할 수 있는 필드 또는 메소드를 말한다. 클래스 멤버라고도 부른다. 선언 방법은 일반적인 필드, 메소드 선언 앞에 static만 붙여주면 된다. 정적 멤버가 필요한 이유는 무엇일까? 바로 공용 데이터를 위해서이다. 예를 들어 수학 기호 파이의 값은 항상 3.14159.... 이다. 이런 값들은 객체가 굳이 가지지 않아도 되는 공용 데이터가 될 수 있다. 따라서 static double pi = 3.14159 로 선언하면 객체를 사용하지 않아도 가져다 쓸 수 있는 정적 필드가 된다. 마찬가지로 인스턴스 필드를 사용하지 않고 오로지 매개값만을 가지고 연산하는 메소드는 static으로 선언해줄 수 있다. 이런 정적멤버들을 외부에서 사용하려면 클래..

간단 지식/Java 2020.06.20

01. 재귀호출(Recursion)과 반복호출

재귀호출은 반복적으로 자기 자신을 호출하는 것을 말한다. 가장 친근한 예시로는 수학에서 찾아볼 수 있는데, 팩토리얼이나 피보나치가 있다. 재귀호출은 비선형 자료구조에 기반을 둔 알고리즘에 자주 사용이 된다. 예를 들어 tree 또는 graph의 노드 탐색이 있겠다. 재귀의 큰 특징은 종료 조건이 반드시 존재한다는 것이다. base case(최소한계)라고도 부르며 이것이 존재하지 않으면 시스템 스택에서 에러가 발생한다. 이 부분에 대해서는 밑에서 OS 관점에서의 재귀에 대해 설명하면서 다시 언급하겠다. 어쨋든 재귀는 하나의 큰 문제를 여러 개의 작은 문제로 쪼개어 해결한다는 점에서 Divide and Conquer(분할정복)이라 부를 수 있다. 재귀호출은 3가지로 분류된다. 1. Linear Recursi..