📚 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>는 T가 Subject의 자식 클래스이어야 한다는 뜻
⛄ 인터페이스와 추상클래스
인터페이스(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 |