자바 강의를 열심히 들었는데 왜 끝이 나지 않는 기분일까 했는데 그래도 오늘은 1차 목표했던 부분까지는 다 들어서 조금의 위로를 해본다. 그런데 속상한 건 앞에 들었던 내용들이 또 내 머릿속에 남아 있지 않고 날아가 버렸다는 점이다, 그럴 줄 알고 2~3회 독으로 계획을 잡았던 거지만, 그래도 한 번 듣고 모든 것을 기억할 수 있었으면 얼마나 좋았을까 하는 부질 없는 생각도 조금 하며 오늘의 공부를 마쳤다.
9시부터 10시까지는 코드 카타를 진행했다.
class Solution {
public double solution(int[] numbers) {
double answer = 0;
int total = 0;
for (int i = 0; i < numbers.length; i++){
total += numbers[i];
}
answer = (double) total / numbers.length;
return answer;
}
}
def solution(number):
total_sum = sum(number)
average = total_sum / len(number)
return average
문제 : 동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC
이후 10시부터 12시까지는 Level2 과제를 다시 풀어보며 코드를 다시 한 번 복습하고 이해하는 시간을 가졌다.
// new ArrayList<>()
import java.util.ArrayList;
// Array.asList()
import java.util.Arrays;
원소의 추가/삭제 | set 사용 | |
---|---|---|
new ArrayList<>() | 가능 | 가능 |
Array.asList() | 불가능 | 가능 |
1시부터 7시 30분까지는 자바의 정석 강의를 들으며 내가 1차 목표로 했던 부분까지의 강의를 들었다.
interface 인터페이스이름 {
public static final 타입 상수이름 = 값; // public static final 생략 가능
public abstract 메서드이름(매개변수목록); // public abstract 생략 가능
}
interface Fightable extends Movale, Attackable {}
interface Movable {
/*지정된 위치(x,y)로 이동하는 기능의 메서드*/
void move(int x, int y);
}
interface Attackable {
/*지정된 대상(u))을 공격하는 기능의 메서드*/
void attack(Unit u);
}
class 클래스이름 implements 인터페이스이름 {
// 인터페이스에 정의된 추상 메서드를 모두 구현해야 함
}
interface Fightable {
void move(int x, int y);
void attack(Unit u);
}
abstract class Figter implements Fightable {
public void move(int x, int y) {/*내용*/}
}
Q. 인터페이스란 추상 메서드의 집합
Q. 인터페이스의 구현이란 인터페이스의 추상 메서드 구현부 만들기 (미완성 설계도 완성하기)
Q. 추상 클래스와 인터페이스의 공통점?
추상 메서드를 가지고 있음(미완성 설계도)
Q. 추상 클래스와 인터페이스의 차이점?
인터페이스는 iv를 가질 수 없음
abstract class Player {
boolean pause; // iv, 일시정지 상태를 저장하기 위한 변수
int currentPos;
Player() { // 추상 클래스도 생성자가 있어야 함
pause = flase;
currentsPos = 0;
}
/*지정된 위치(pos)에서 재생을 시작하는 기능이 수행하도록 작성되어야 함*/
abstract void play(int pos); // 추상메서드
/*재생을 즉시 멈추는 기능을 수행하도록 작성되어야 함*/
abstract void stop(); // 추상메서드
void play() {
play(currentPos); // 추상메서드 사용 가능
}
}
/*인터페이스는 iv, 생성자, 인스턴스 메서드 생성 불가*/
interface Fightable {
void move(int x, int y);
void attack(Unit u);
}
interface Fightable {
public void move(int x, int y) {/*내용*/}
public void attack(Fightable f)
class Fighter extends Unit implements Fightable {
public void move(int x, int y) {/*내용*/}
public void attack(Fightable f) {/*내용*/}
}
Unit u = new Fighter();
Fightable f = new Fighter();
f.move(100, 200);
f.attack(new Fighter());
interface Fightable {
public void move(int x, int y) {/*내용*/}
public void attack(Fightable f)
/*Fightable 인터페이스를 구현한 클래스의 인스턴스만 가능*/
/*Fightable 인터페이스를 구현한 클래스의 인스턴스를 반환*/
Fightable method() {
...
Fighter f = new Fighter();
return f;
/*위의 두 문장을 한 문장으로 바꾸면 => return new Fighter();*/
}
class Fighter extends Unit implements Fightable {
public void move(int x, int y) {/*내용/*}
public void attack(Fightable f){/*내용*/}
}