각종 학습 요약/Java
-
추상클래스와 인터페이스의 차이와 선택 기준각종 학습 요약/Java 2022. 5. 13. 16:17
추상클래스와 인터페이스의 차이와 선택 기준 이 글은 추상화나 abstract 키워드에 대해 설명하는 글이 아니고, 추상화 개념이 동일하게 적용되었으면서도 각각 다른 방식으로 상속하는 추상클래스와 인터페이스의 차이를 알아보기 위함이다. 추상클래스의 특징 추상클래스는 일반 필드와 일반 메소드 그리고 추상 메소드를 가질 수 있는 클래스다. 인터페이스의 특징 static final 변수만 가질 수 있으며 추상 메소드를 가질 수 있는 추상객체다. 한 가지 의문 추상 클래스의 설명을 읽다가 문득 이런 의문이 들었다. 추상 클래스도 주 목적은 추상메소드 구현을 통한 강제 Overriding이고, 인터페이스의 주 목적도 동일하게 구현체의 기능 구현을 강제하는 건데, 굳이 둘이 나눠져 있는 이유는 뭐지? 인터페이스가 다..
-
# Java의 상속 개념 : inheritance, composite각종 학습 요약/Java 2022. 5. 12. 16:24
Java의 상속 개념 상속에 대해 설명을 잘하는 것 같진 않지만, 적어도 장단점은 꼭 알아보고 상속 개념을 활용하면 좋겠다는 마음으로 글을 써본다. 이 글에도 끄트머리 즈음(아마도..)에 장단점을 다룬다. 상속이란? 두 클래스 간 만들어질 수 있는 연관 관계 중 하나다. 둘 중 개념의 범위가 좀 더 넓고 하나를 포괄하고 있는 클래스를 상위 클래스(혹은 부모 클래스)라고 하고, 좀 더 특정적이고 구체적인 개념의 클래스를 하위 클래스(혹은 자식 클래스)라고 한다. 개념적인 설명이 잘 와닿지 않는다면 역시 비유로 가자. 언제 상속관계가 필요할까? IS-A or HAS-A / 상속(inheritance)와 포함(composite)이라는 키워드를 알아야 한다. 닉은 사람이다 (닉 == 사람, is-a) 닉은 심장..
-
Java: 생성자(Constructor)의 기본적인 이해각종 학습 요약/Java 2022. 5. 11. 13:28
Java: 생성자(Constructor)의 기본적인 이해 생성자란? 생성자는 이름에서 보이듯 뭔가 생성하는 녀석이다. 그렇다면 무엇을 생성하는가? 자기 자신이다. 무슨 말인지 천천히 알아보자. Java의 모든 클래스 내부에는 생성자가 존재한다. 생성자가 없으면 클래스를 생성할 방법이 없다. 우리가 어떤 클래스를 객체로 생성할 때를 보면 왜인지 알 수 있다. String string = new String(); new 키워드 뒤에 보면 String()가 있다. 이것은 무얼 호출하고 있는 것일까? 바로 String 클래스에 있는 생성자다. IDE에서 해당 부분에 커서를 두고 Ctrl + Click하면 String 클래스의 해당 생성자로 곧장 이동한다. /* String Class의 기본 생성자의 모습 */ ..
-
클래스와 인스턴스의 관계 이해하기각종 학습 요약/Java 2022. 5. 10. 16:01
클래스와 인스턴스의 관계 이해 오늘 부트캠프 학습을 진행하면서 동기들과 많은 이야기를 했는데, 그 중에서도 클래스와 인스턴스의 관계/차이에 대해 이야기 해보려고 한다. 짧고 간략한 예시로 설명하고자 하는데, 작게나마 도움이 되면 좋겠다. 메로나로 설명하는 클래스와 인스턴스의 관계 예를 들어서 설명할 수밖에 없다. 메로나 레시피를 작성해보자. 메로나 레시피: 메로나는 색소는 초록색이다. 메로나의 단맛은 설탕 50g이다. 메로나의 적정온도는 영하 18.5도다. 메로나는 한 입 깨어물면, 시원한 상태를 돌려준다. 메로나를 한번에 두입 이상 깨어물면, 머리가 아픈 상태를 돌려준다. 레시피는 하나의 '정의서'다. 그 대상 물체가 어떠한 속성을 지니고 있는지, 어떤 동작들을 하는지, 대상의 구성 성질..
-
객체지향프로그래밍(OOP) 개념의 기초적인 이해각종 학습 요약/Java 2022. 5. 10. 12:05
객체 지향 프로그래밍(OOP, Object-Oriented Programming) 개념의 기초 기본 구성 클래스(Class): 같은 분류로 묶이는(같은 기능/목적을 가지는) 속성들(멤버변수로 표현된다)과 행위들(메소드로 표현된다)의 정의. OOP에서는 클래스를 사용자가 정의한 데이터 타입으로써 사용한다(참조타입). Java에서는 다음과 같은 식으로 정의된다. class Car { // 멤버(혹은 필드) (속성) private String name = "MustangGT"; // 메소드 (행동) public void startUp(Key key) { ... } // 생성자 public Car() { ... } public Car(Driver driver) { ... } class CarInner { .....
-
조금 특별한 타입: String각종 학습 요약/Java 2022. 5. 6. 21:55
String 객체, 그리고 참조 타입 참조타입이란 말은 낯설 수 있다. 아직 자세히 알아보지 않을 거니까 괜찮다. 다만 지금은 String이 참조타입이란 걸 이야기하고 싶은 것이니, 그 정도만 알아두자. String은 지난 번 살펴봤듯 Java에서 기본적으로 주어지는 자료형(원시타입, primitive type)은 int(숫자), byte(숫자), short(숫자), long(숫자), double(소수), float(소수), boolean(참/거짓), char(문자(한 글자))가 있다. 그 중에 문자를 표시하는 char가 있긴 하지만, 딱 한 자의 문자밖에 표현할 수가 없다. 프로그램을 제어하다 보면 여러 글자가 이어진 문자열을 제어할 필요성을 많이 느낄 수 있다. 이 글만 해도 한글자로는 적을 수 없고..