📚 KEYWORD
클래스
클래스란 객체를 생성하기 위한 일종의 설계도
객체
클래스로 만들고자 하는 것
인스턴스
클래스로 만든 한 객체
다형성
하나의 타입으로 다양한 객체를 사용할 수 있는 것.
상속, 메서드 오버라이드, 클래스 타입 변환의 조합으로 다형성을 극대화 할 수 있다.
오버로딩
하나의 클래스 안에서 같은 이름의 메서드를 여러개 구현하고 필요에 따라 메서드를 선택할 수 있다.
이가 가능한 것은 자료형, 개수, 순서로 메서드를 구별하기 때문
상속
클래스를 만들다 보면 공통된 속성을 가지고 있는 게 보인다.
클래스간 공통된 성질을 부모에 넣고
특화된? 다른 부분들은 자식 각각에서 정의하여 중복을 제거할 수 있다.
오버라이딩
부모 클래스에게 상속받은 메서드를 재정의하여 자식 클래스용 메서드를 구현
상속과 오버라이딩
class Car {
int wheel = 4;
void getWheelNum() {
System.out.println("바퀴 수는 "+ wheel + "개 입니다.");
}
void ride() {
}
}
// 버스
class Bus extends Car {
Bus() { // 자식 클래스에는 super()을 포함한 생성자가 기본으로 생략되어 있음
super(); // 부모 생성자를 호출
}
void ride() {
System.out.println("부릉부릉");
}
}
// 택시
class Taxi extends Car{
void ride() {
System.out.println("빵빵");
}
}
getter
- private인 필드 값을 얻기 위해 getter을 쓴다.
public int getPrice() { return price; }
setter
- 필드 값은 'set'으로 설정
- 변경할 값을 검증하는 용도로도 사용된다.
public void setPrice(int price) { if (price > 0) this.price = price; }
🤔 THINK
오버로딩을 해야 하는 이유
생성자의 경우
클래스를 만드는 시점에서 알 수 있는 필드가 있다면 바로 초기화를 하면 좋지만,
모르는 경우는 그럴 수 없다.
이럴 떄 오버로딩이 없다면
Person p1 = new Person();
Person p2 = new Person();
p2.setName("p2");
Person p3 = new Person();
p2.setName("p3");
p3.setAge(18);
이렇게 일일이 set을 해줘야겠지 ..
그치만 우리는 오버로딩이 있다.
Person() {
}
Person(String name) {
this.name = name;
}
Person(String name, int age) {
this.name = name;
this.age = age;
}
Person p1 = new Person();
Person p2 = new Person("p2");
Person p3 = new Person("p3", 18);
당장은 더 만든 코드가 길어보이지만
앞으로 생성될 무수한 인스턴스들을 생각하면 오버로딩 굿 ..
그리고 또
같은 기능을 하지만 입출력값의 타입을 변형하기 위함
도 있다..
오버라이딩 vs 오버로딩
한 클래스 내 - 오버로딩
상속 - 오버라이딩
클래스 vs 객체 vs 인스턴스
클래스는 일종의 설계도이자 붕어빵 틀. 속성(필드), 동작(메서드), 생성자로 구성되어 있다.
객체는 추상적인 붕어빵
즉 객체란 자신 고유의 속성을 가지는 물리적, 추상적인 모든 대상을 말한다.
인스턴스는 클래스로 생성된, 붕어빵 틀로 만들어 구운 붕어빵 하나 하나를 인스턴스라고 한다.
즉, 인스턴스란 현실의 객체를 소프트웨어 내에서 구현한 실체라고 볼 수 있다.
객체 지향의 특징
캡슐화
상속
다형성
...
변수, 함수 <-> 필드, 메서드
클래스 밖 : 변수, 함수
클래스 내 : 필드, 메서드
💬 ETC
코드 컨벤션
- js : 에어비앤비
- java : 구글
코테 언어에 대하여
언어를 사용하는 이유에 대해서 말할 수 있도록
왜 C++을 사용하게 되었나요?
알고리즘 처음 풀이를 시작을 C++로 하게 되었습니다.
속도 측면을 고려한 것도 있고, 그 때는 게임 개발을 희망하여 자주 사용하는 언어가 C 계열이었기 때문입니다.
현재는 돌이키기엔 멀리 와버려서 계속 C++로 하고 있습니다.이게 맞나 .. ㅎ
프로젝트 리드미 작성
- 프로젝트 설명 : 개요, 기술 스택, 설계, 이슈, 해결방안
- 주요기능은 그닥 중요하지는 않음
- "흐름" = 포커싱 하고 싶은 곳...
- 프로젝트 장점/관점을 하나 잡아서 하기
- 기술 스택(순서), 설계(패키지, DB) , 주요기능( 가장 열심히 만든 기능부터 넣기 ) , 이슈 ( 만약 주요기능을 내가 맡지 않았어도, 내가 하고 싶긴 했는데 못했던 거를 넣거나 고민했던 내용들을 넣기 )
'기타 > TIL' 카테고리의 다른 글
[TIL] 24.04.30 (0) | 2024.05.02 |
---|---|
[TIL] 24.04.29 (2) | 2024.04.30 |
[TIL] 24.04.08 (0) | 2024.04.08 |
[TIL] 24.04.05 (0) | 2024.04.08 |
[TIL] 24.04.03 (0) | 2024.04.03 |