코딩/TIL

TIL #210109

나동 2021. 1. 9. 23:42

📚 TIL


자바 중급 개념

 

🎉 현재 시각 새벽 1시 28분 [자바 기초] 코스 수료!! 🎉

 

 

 

⛄ 제네릭

 

제네릭 클래스(Generic Class)

 

타입 파라미터 : 꺽쇠 기호(<>)사이에 있는 파라미터

제네릭 클래스 : 타입 파라미터를 받는 클래스

 

public class Box<T> {
    private T something;

    public void set(T object) {
        this.something = object;
    }

    public T get() {
        return something;
    }
}

Box<String> box = new Box<>();
//타입 파라미터로 String을 넘겨주면 클래스에 있던 모든 T가 String으로 대체됨

 

제네릭을 사용한 클래스 상속

 

public class SubjectBox extends Box<Subject> {
    public void AnswerShow(String subjectName) {
        object.show(subjectName);
    }
} //SubjectBox 클래스는 Subject 타입을 받는 Box 클래스를 상속 받음

 

extends 키워드를 이용한 타입 제한

 

public class SubjectBox<T extends Subject> extends Box<T> {
    ...
    }
} //<T extends Subject>는 TSubject의 자식 클래스이어야 한다는 뜻

 

⛄ 인터페이스와 추상클래스

 

인터페이스(Interface)

 

- 클래스들이 포함해야 하는 메소드를 선언한 자료형

- implements : 인터페이스에 선언된 메소드를 사용하겠다는 약속을 할 때 사용

- 인터페이스 내의 메소드들은 기본적으로 public

 

public interface Shape {
    ...
}

public class Triangle implements Shape {
    ...
}

 

추상 클래스(Abstract Class)

 

- 변수와 메소드, 빈 메소드를 가질 수 있는 자료형

- 추상 메소드에 반드시 abstract 제어자를 붙여줘야 함

- extends로 상속할 수 있음

 

  일반 클래스 추상 클래스 인터페이스
변수 o o x
정의된 메소드 o o x
빈 메소드(추상 메소드) x o o
public abstract class Shape {
   ...
   public abstract double getArea();
   ...
}

public Triangle extends Shape {
    ...
    public double getArea() {
        ...
    }
    ...
}

 

익명 클래스(Anonymous Class)

 

- Abstract Class는 빈 메소드를 가진 완전하지 않은 클래스이기 때문에

바로 인스턴스를 만들 수 없음

- 인스턴스를 생성하기 위해 클래스를 만들어야하는 불편함을 해소하기 위해 사용

 

Abstract horse = new AbstractAnimal("고양이") {
    public void cry() {
        System.out.println("야옹");
    }
}; //생성자를 생성하고 중괄호 안에 메소드 구현

Scanner s = new Scanner(System.in);
    String name = s.next();
    String sound = s.next();
    animals.add(new AbstractAnimal(name) {
        public void cry() {
            System.out.println(sound);
        }
    }; //사용자 입력으로 받은 동물 클래스를 만들어 넣어줌

 

Comparable 인터페이스

 

- 객체의 정렬 기준을 정하는 인터페이스

 

ArrayList<Person> personList = new ArrayList<>();
personList.add(new Person("Alex", 30));
personList.add(new Person("Charlie", 27));
personList.add(new Person("Ben", 24));

Collections.sort(personList); //그냥 정렬하면 오류가 남

public class Person implements Comparable<Person> {
    ...
    public int compareTo(Person o) {
        return age - o.age;
   }
/* 이렇게 하고 System.out.println(personList) 하면
[Ben: 24세, Charlie: 27세, Alex: 30세] */

    public int compareTo(Person o) {
        return name.compareTo(o.name);
   }
/* 이렇게 하고 System.out.println(personList) 하면
[Alex: 30세, Ben: 24세, Charlie: 27세] */

 


 

😁 오늘 한 일


 

📕 코드잇 공부하기

- 오늘은 자바 중급 개념 진도를 끝냈어요! 문제까지 풀면 끝~

- 지금 블로그 글을 쓰고 문제를 풀건데 오늘 안에 다 풀면 글 수정할거예요 ㅋㅋㅋ

- 오늘 다 풀고 자자!!! 오늘 문제들은 그렇게 어렵지 않더라!! 파이팅!!

- 이야! 다풀었어요! 자바 끝났다!!! 짝짝짝~~ 이제 잘 수 있다~~

- 열심히 하면 되겠지? 하다보면 되겠지?했는데 명성에 걸맞게 쉽게 배울 수 있는 언어가 아니었어요

- 프로그래밍을 하려면 꼭 알아야한다는 객체지향, 자료구조, 알고리즘 자체가 어려운 것 같기도 해요

- 프론트엔드 공부를 하기로 했으니 내일부터 프론트엔드 심화과정 공부하면서 다른것도 병행해야 할 것 같아요

- 내일 일정은 자고 일어나서 짜야지!! 한시 반이라니 ㅠㅠ 얼른 자야겠어요 안녕히주무세요~~

 

💻 노트북 찾아오기

- 노트북이 고장나서 수리를 맡겼다가 오늘 찾아왔는데요

- 얼마나 나올까 걱정했는데 다행히 무상수리였어요!! ㅜㅜㅜ

- 얼마 나올지 몰라서 아빠랑 같이 갔다가 아빠가 기분이 좋아서 빵을 사주셨어요 ㅋㅋ

- 후후.. 마음의 짐 하나 덜었다! 행복합니다 내일 드림래빗 사야지 후후후

 

 

무상수리의 기쁨

 

🍲 샤브샤브 먹기

- 저의 최애 매뉴 샤브샤브!! 가족들과 또 먹었어요

- 처음 와본 곳인데 여기는 샤브샤브가아니라 샤브전골이래요

- 국물이 갈비탕같은 맛이라 독특하더라고요!! 추운 날씨에 따뜻하게 잘 먹었어요

- 식당 이름이 해가연 만두 이렇게 되어있었는데 만두 맛집인가봐요 ㅎㅎ

 

 

🍁 메이플하기

- 오늘은 우르스잡고 몬파하고 코인모으고 몬스터라이프하고 끝..

- 보스잡기 귀찮다 큰일이다 돈모아서 옷사야되는데!!!

 

🔒 방탈출 게임하기

- 자기 전에 집에서 안전하게 할 수 있는 모바일 방탈출 게임을 했어요

- 갑자기 왜 했냐면 누가 심야괴담회가 재밌다고 했는데 왓챠랑 넷플에는 다시보기가 없더라고요

- 제가 원래 무서운걸 좋아하거든요! 아쉬워서 자기 전에 무서움 지수를 충전하고 싶었어요

- 어플 이름은 Cube Escape: Paradox KR 이에요! Rusty Lake 사 게임이에요

- 러스티 레이크 게임 예전에 많이 했었는데! 특유의 으스스한 분위기에 소름돋는 연출이 재밌어요

- 하다가 막혀서 다음날 일어나서 하려고 잤어요 ㅋㅋ

 

 


 

🌼 주저리주저리


 

아침에 문제를 풀다가 어떤 질문의 제목을 보게 되었어요

 

"이 문제를 두 시간 이상 고민해본 분들만 제 질문을 보세요!"

앗.. 이 제목을 보니 하나를 깨닫게 되었어요. 제가 어떤 문제든 풀릴 때 까지 몇 시간을 붙잡고 있었는데

그것 때문에 배우는 시간이 오래걸려서 마음이 불편했거든요. 제가 좋아하는 방탈출도 시간을 정하고 하는데 말이에요!

토론을 할 때도 시간을 정하고 하는게 효율적이고 시험도 시간을 정해놓고 자신의 능력을 최대한 발휘해서 풀잖아요!

꼭 내 힘으로 풀어야한다는 강박을 버리고 아직은 배우는 단계이니까 다른사람의 코드를 참고하면서 풀어도 도움이 많이 될 것 같아요

 

 

'코딩 > TIL' 카테고리의 다른 글

TIL #210111  (0) 2021.01.11
TIL #210110  (0) 2021.01.10
TIL #210108  (0) 2021.01.08
TIL #210107  (0) 2021.01.07
TIL #210106  (0) 2021.01.06