2020-05-26 TIL

Facts

  • 우민씨와 짝 프로그래밍을 하면서 몰랐던 부분이나 서로 알았던 부분을 공유하면서 todoList를 내가 생각하는 객제치향적으로 필요한 기능을 모두 구현했다.
  • 알고리즘 기초문제 수박수박수, 문자열을 숫자로 문제를 풀었다. 문제가 좀 이상한 감이 있었지만 빠르게 풀었다.

Feelings

  • 최대한 키보드로 직접 쳐 보면서 머리에 넣으려고 노력중인데 생략된 부분도 많고, 처음부터 이해가 안가는 부분도 많다는 것을 느꼈다.
  • 내가 이것을 공부하고 적용 할 수 있을까 하는 의문이 들었다. 이것을 쓸 때가 올까 라는 생각이 들었다. 뭐든지 필요할때 공부해야 머리에 잘 들어오는데 중요성을 모르고 공부만하니 매우 어렵다.

Findings

  • 해당 클래스에 생성자가 2개면 호출되는 생성자는 인수에따라 결정된다. 이름은 같지만 매개변수가 다른 메서드가 여러 개 있으면 메서드가 오버로드 된 것이다. 또 다른 생성자에서 어느 한 생성자를 호출할 수있는데, 호출하는 쪽 생성자의 바디의 첫 번째 문장으로만 허용한다. 이렇게 될 경우 생성자 이름이 아니라 this 키워드를 사용한다.
  • 생성자 안에 인스턴스 변수를 명시적으로 설정하지 않으면 자동으로 변수를 기본 값으로 설정한다. 숫자는 0, 불 값은 false, 객체 참조는 null이 기본 값이다. 숫자는 보통 0으로 초기화한다. null은 안쓰는게 좋다.

    9I- 이와 같은 방식으로 인스턴스 변수에 초깃값을 지정할 수 있다. 이 초기화는 객체를 할당하고 나서 생성자가 실행되기 전에 일어난다. 또다른 초기화 방법은 클래스 선언 안에 임의의 초기화 블록을 넣는 방법이 있다. 인스턴스 변수 초기화와 초기화 블록은 클래스 선언에 나타난 순서로 실행하며, 그다음에 생성자를 실행한다.

public class Employee {
    private String name = "";
    ...
}
  • 클래스 안에 변수를 static으로 선언하면 해당 변수는 클래스당 하나만 존재한다.
  • 정적 메서드는 객체에 작동하지 않는 메서드다. Math.pow(x, a) 이 메서드는 작업을 수행할 때 Math 객체를 전혀 사용하지 않는다. 1장 프로그래밍 구조에서 살펴본 것처럼 정적 메서드는 static 제어자로 선언한다. 1. 자바에서 기본 타입은 클래스가 아니므로 double의 인스턴스 메서드가 될 수 없다. Math 클래스의 인스턴스 메서드로 만들 수도 있었지만. 그랬다면 pow 메서드를 호출하려고 Math 객체를 생성해야 했을 것이다. 정적 메서드를 사용하는 또 다른 이유는 다른 사람이 만든 클래스에 부가 기능을 제공하는 것이다.
  • 정적 메서드는 객체에 작동하지 않으므로 인스턴스 변수에 접근할 수 없다. 그 대신 자신이 속한 클래스의 정적 변수에 접근할 수 있다. ?무슨 말이지?
  • 자바에서는 연관된 클래스들을 한 패키지안에 넣는다. 패키지를 사용하면 작업을 조직화하고 다른 사람이 제공한 코드 라이브러리와 분리하기 편하다. 또한 패키지를 사용하는 것은 클래스 이름의 유일성을 보장하기 위해서다.
  • 다른 클래스를 다른 클래스 내부에 두는 방법을 중첩 클래스라고 한다. 중첩 클래스는 가시성?을 제한하거나 일반적인 이름을 쓰면서 정돈된 상태를 유지할 때 유용하다. 내부클래스..? 아직 지식이 부족한 것 같다.
  • 인터페이스 타입으로 변수를 선언할 수 있지만, 타입이 인터페이스 자체인 객체는 만들 수 없다. 모든 객체는 클래스의 인스턴스다.

Future Action Plan

  • 책에 나와있는 책을 무작정 쳐보면서 이해하려고 노력하고 있는데, 정말 내가 보고 있는 것들의 중요성을 알지 못해서 내가 과연 자바 코드를 작성할 때 이 공부 했던 것들을 쓸 수 있을지 의문이 들었다.
  • 그래도 첫 번째 볼 때보다 다시 한 번 더 보니까 그전보다 더 눈에 잘 들어오는 느낌을 받았지만, 아직 부족하다는 느낌이 들었다. 특히 2장이 답이 없다고 생각했는데, 3장을 보니까 더 답이 없다는 것을 느꼈다. 이해할 때까지 계속 치면서 공부해야겠다.
  • 내가 공부한 것을 내 투두리스트에 적용시켜야하는데, 도저히 어디서부터 바꿔야 할지 감이 안 온다. 일단 책 내용부터 이해하도록 해야겠다.