🤔 인터페이스를 이용한 다형성이란? ✔ 인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능 ⭐⭐⭐ ✔ 인터페이스를 메서드의 리턴타입으로 지정할 수 있다. abstract class Unit { int x, y; abstract void move(int x, int y); void stop() { System.out.println("멈춥니다."); } } interface Fightable { void move(int x, int y); // public abstract 생략됨 void attack(Fightable f); // public abstract 생략됨 } class Fighter extends Unit implements Fightable { public void move(int..
🤔 추상 클래스(abstaract class)란? ✔ 미완성 설계도. 미완성 메서드를 갖고 있는 클래스 ✔ 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가 ✔ 미완성 메서드. 구현부(몸통, {})이 없는 메서드 /* 주석을 통해 어떤 기능을 수행할 목적으로 작성하였는지 설명 */ 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가 Player p = new player(); // 에러. 추상 클래스의 인스턴스 생성 불가 그럼 인스턴스 생성 불가한 클래스를 만드는 이유가 뭘까? 👉 다른 클래스 작성에 도움을 주기 위해서!! abstract class Player { // 추상클래스(미완성 클래스) abstract void play(int pos); // 추상메서드(몸통{}이 없는 ..
오늘은 객체지향의 꽃인 다형성에 대해 학습해보자. 🤔 다형성(polymorphism)이란? ✔ 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 ✔ 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 Tv t = new SmartTv(); // 타입 불일치 위와 같이 Tv (조상 타입 참조 변수) 리모콘으로 SmartTV(자손 타입 객체)를 다루는 것을 다형성이라고 한다. 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. Tv t = new SmartTv(); // 허용 SmartTv s = new Tv(); // 허용 안 됨. // 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. SmartTv 리모컨 버튼 6(Tv버튼..
🤔 제어자(modifier)란? ✔ 클랫와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여 🤔 static이란? 🤔 final이란? 🤔 abstract 란? 추상의, 미완성의 ✅ 추상메서드란? ✔ 몸통이 없는 메서드 ✔ 미완성 메서드 ✔ 선언부만 있고, 구현부는 없다. ✔ abstract 키워드가 붙는다. ✅ 추상클래스란? ✔ 추상 메서드를 갖고 있는 클래스 추상클래스의 인스턴스 생성불가 ❌ abstract class AbstractTest { // 추상클래스 (추상메서드를 포함한 클래스) abstract void move(); // 추상 메서드(구현부가 없는 메서드) } AbstractTest a = new AbstractTest(); // 에러!! 추상 클래스의 인스턴스 생성불가 추상클래스는..
🤔 참조변수 super란? ✔ 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자) 내에서만 존재 ✔ 조상의 멤버를 자신의 멤버와 구별할 때 사용 🤔 this와 super의 차이점? this : 지역변수(local variable)와 인스턴스 변수(instance variable)의 구분에 사용 super : 조상의 멤버와 자신의 멤버 구분에 사용 다음의 예제를 보자. class T2 { public static void main(String[] args) { Child c = new Child(); c.method(); } } class Parent { int x = 10; /** super.x */ } class Child extends Parent { int x = 20; // this.x vo..
그간 필자는 객체지향이 정확히 무엇인지도 모르고 생성자, 오버로딩, 오버라이딩은 왜 배우는지도 모르고 주입식으로 학습했다. 객체지향 : 객체 단위로 프로그래밍 하는것, 코드의 중복 줄일 수 있음. 오버로딩 : 생성자 여러 개 생성하는 데 매개변수 다른 것 오버라이딩 : 상속받은 생성자 재정의 하는 것 등 이론식으로 공부했다. 그러다 다음의 예제를 만나고 모든 것이 한번에 이해가 되었다. 이전 필자의 포스팅에서 소개한 내용인데 필자의 시야가 확 트이는? 예제였기에 다시 한 번 포스팅 한다. (이전 포스팅 참고) 바로 들어가보자. 다음의 코드를 보자. (코드를 잘 짜는 것이 얼마나 코드를 단축시킬 수 있는지 알게 되는 코드이다.) 필자는 처음에 강의를 듣고 소름이 돋았다. 👍 class MyPoint3 ex..
🤔 상속(Inheritance)란? ✔ 기존의 클래스로 새로운 클래스를 작성하는 것.(코드의 재사용) 두 클래스를 부모와 자식으로 관계를 맺어주는 것 ✔ ⭐ 자손은 조상의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외) 따라서 ✔ 자손의 멤버 개수는 조상보다 적을 수 없다.(같거나 많다.) 왜냐 모든 멤버를 상속받으니까!! ✔ 자손의 변경은 조상에 영향을 미치지 않는다. 🤔 포함(composite) 관계란? ✔ 포함(composite)이란? 클래스의 멤버로 참조변수를 선언하는 것 작은 단위의 클래스를 만들고, 이 들을 조합해서 클래스를 만든다. class Poitn { int x; int y; } class Circle { int x; // 원점의 x좌표 int y; // 원점의 y좌표 int r;..
🤔 생성자 this()란? 생성자에서 다른 생성자를 호출할 때 사용한다. 다른 생성자 호출 시 첫 줄에서만 사용가능! 다음의 예시를 살펴보자. Car(String color) { door = 5; Car(color, "auto", 4); // 에러, 다른 생성자 호출 시 반드시 첫 줄에서만 사용가능!! // 또한 같은 클래스 안의 생성자를 호출할 때 Car(color, "auto", 4); 로 호출하면 안되고 // this 사용해야함. } // 올바른 사용법 Car(String color) { this(color, "auto", 4); } 🤔 참조변수 this란? 인스턴스 자신을 가리키는 참조변수 인스턴스 메서드(생성자 포함)에서 사용가능 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용 this..
🤔 메서드란? 문장들을 묶어 놓은 것 값(입력)을 받아서 처리하고, 결과를 반환(출력) 메서드 = 선언부 + 구현부 🤔 메서드의 장점? 코드의 중복을 줄일 수 있다. 코드의 관리가 쉽다. 코드를 재사용할 수 있다. 코드가 간결해서 이해하기 쉬워진다. int add(int a, int b) { // 선언부 int result = a + b; // 구현부 return result; // 호출한 메서드로 결과 반환 // 구현부 } ✅ 메서드는 클래스 영역에만 정의 가능하다 🤔 Return이란? 실행 중인 메서드를 종료하고 호출한 곳으로 되돌아가는 것 반환타입이 void가 아닌 경우, 반드시 return 필요 🤔 호출 스택이란? 스택(stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓임. 호출 스택 : 메서드 ..
🤔 객체의 생성 // 클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수 선언 // 변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장 Tv t; // t : 참조변수 t = new Tv(); // Tv 인스턴스 생성 후, 생성된 Tv 인스턴스의 주소를 t에 저장 ✅ 순서 클래스 작성 -> 객체 생성 -> 객체 사용 🤔 객체 배열 객체 배열 == 참조변수 배열 🤔 클래스의 정의 클래스 == 데이터 + 함수 🤔 변수란? 하나의 데이터를 저장할 수 있는 공간 🤔 배열이란? 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간 배열의 한계 : 같은 종류의 데이터만 저장할 수 있다. 🤔 구조체란? 서로 관련된 여러 데이터(종류 관계X)를 하나로 저장할 수 ..
🤔 클래스의 정의 클래스란 객체를 정의해 놓은 것이다. 🤔 클래스의 용도 클래스는 객체를 생성하는 데 사용한다. 그럼 객체란 무엇일까? 🤔 객체의 정의 실제로 존재하는 것 사물 또는 개념을 의미한다. 🤔 객체의 용도 객체가 가지고 있는 기능과 속성에 따라 다르다. 객체의 구성 요소 - 속성과 기능 객체 = 속성(변수) + 기능(메서드) 🤔 객체와 인스턴스 객체 : 모든 인스턴스를 대표하는 일반적 용어 인스턴스 : 특정 클래스로부터 생성된 객체(예 : TV 인스턴스) 클래스 -------------------> 인스턴스(객체) 인스턴스화 그럼 오늘도 열공하자 🔥
🤔 객체 지향 언어 컴퓨터 프로그래밍의 한가지 기법으로 절차적 프로그래밍 방법과 대조되며 객체를 만들고 객체를 사용하는 프로그래밍 방법을 의미한다. 객체지향 언어 = 프로그래밍 언어 + 객체지향개념(규칙) 객체 지향 언어의 장점 ❓ 코드의 재사용성이 높고 유지보수가 용이하다 중복된 코드를 제거할 수 있다. 즉, 프로그램을 데이터와 처리방법으로 나누는 것이 아닌 프로그램을 다수의 "객체"로 만들고 상호작용하는 방식이다. 명령어들로 이루어진 목록이 아닌 하나하나의 독립된 "객체"들의 그룹으로 생각하여 객체간의 메시지를 주고 받음으로서 연결하는 방식이다. 🤔 OOP 4대 핵심 개념 OOP (Object-Oriented Programming) : 객체 지향 프로그래밍 캡슐화 상속 추상화 ⭐ 다형성 ⭐ 다음 포스..
개발을 하던 도중 DTO와 VO의 차이에 대해 궁금해졌다. 🤔 우선 DTO란? Data Transfer Object의 약자로 순수하게 데이터를 담아 계층 간으로 전달하는 객체이다. 로직 없이 순수하게 데이터만 전달하는 것으로써 getter/setter 메서드가 이에 해당한다. 🤔 VO란? Value Object의 약자로 특정 값 자체를 표현하므로 불변성을 보장하기 위해 생성자를 사용하여야 한다. VO는 값자체를 나타내므로 setter 같은 새로 값을 지정하는 메서드가 존재해선 안된다! (왜냐? 불변성을 보장해야하기 때문) 좀 더 쉬운 말로 DTO는 데이터를 담아 계층 간으로 전달한다. 값을 가져오고 (get) 전달해 지정한다.(set) 그럼 VO는 특정 값 자체를 표현한다. ✔ VO와 DTO의 차이점? ..
오늘은 필자의 이전 포스팅에서 설명하기로 했던 equals와 ==의 차이에 대한 포스팅을 진행하겠다. ('이전 포스팅' 클릭) 이전 포스팅에서도 말했지만 👉 equals와 ==의 차이점을 소개하자면 equals의 경우 메서드이기 때문에 ()안의 내용을 비교한다. 📌 즉 두 대상의 값 자체를 비교한다! ==의 경우 객체의 주소를 비교한다. 기본 타입 int형, char형 등은 대상에 주소값을 가지지 않고 쓰이기 때문에 ==(동등비교)가 가능하지만 String은 클래스 이기 때문에 생성할 때마다 새로운 주소값이 부여된다. 📌 그래서 String 타입의 경우 '값' 자체는 같아도 '주소'는 다르다!! 말만 들어선 이해가 어려울 수 있으니 직접 코드를 통해 확인해보자!! 🤔❓ 우선 필자가 위에서 설명한 것을 바..
- Total
- Today
- Yesterday
- 코드
- JPA
- BAEKJOON
- 정보처리산업기사 공부법
- queue
- 챌린지
- hackerrank challenges
- 강의
- LinkedList
- 디버깅
- 정보처리산업기사
- 자바
- 해커랭크 자바 챌린지
- 그리디
- 해커랭크
- 22 정보처리산업기사
- 해커랭크 자바
- stack
- hackerrank
- 백준
- Java
- 해커랭크 챌린지
- ORM
- 자바의 정석
- 풀이
- 22 정보처리 산업기사
- 정보처리 산업기사
- challenges
- 소스코드
- 개발자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |