일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dynamic programming
- array
- Binary Search
- Matrix
- Method
- 구현
- Class
- database
- string
- sorting
- Math
- implement
- Binary Tree
- java
- Data Structure
- Tree
- SQL
- 코딩테스트
- simulation
- Stack
- bit manipulation
- 파이썬
- hash table
- Counting
- greedy
- Number Theory
- 자바
- geometry
- two pointers
- 코테
- Today
- Total
목록polymorphism (6)
코린이의 소소한 공부노트

class Product {}// 부모 class Tv extends Product {}// 자식1 class Audio extends Product {}// 자식2 3가지 부모-자식 클래스들을 이용해서 지네릭스에 다형성이 어떤 식으로 적용되는지 살펴보려 한다. 1. 참조변수와 생성자에 대입된 타입은 무조건 일치해야 한다. ArrayList productList = new ArrayList();// OK ArrayList tvList = new ArrayList(); // OK ArrayList tvList = new ArrayList(); // 에러. 부모 자손 관계여도 지네릭 타입이 다르면 에러 2. 지네릭 클래스 간의 다형성은 성립한다. 대입된 타입은 같아야 한다. List tvList = new ..

1. 두 대상(객체) 간의 연결을 돕는 중간 역할을 한다. - 사람은 인간의 언어를 사용하고, 컴퓨터는 기계어를 사용한다. 서로의 말을 이해하지 못하지만, 우리는 컴퓨터를 쉽게 사용한다. 여기서 인터페이스(껍데기)는 GUI(Graphic User Interface)이다. GUI가 화면에 띄운 아이콘을 누르거나 키보드로 입력을 함으로써 컴퓨터 언어, 내부(알맹이)를 몰라도 사람이 컴퓨터를 사용할 수 있게끔 해 준다. 2. 변경에 유리한 설계를 하게 해 준다. - 그래픽 카드를 바꾸거나 RAM카드를 바꾸는 등 컴퓨터 내부(알맹이)의 변화가 생겨도 GUI(껍데기)를 이용해 얼마든 사용할 수 있기 때문에 사용자는 컴퓨터 내부 변화에 크게 영향받지 않는다. 3. 선언(설계)과 구현을 분리시킬 수 있게 한다. 1)..

시간을 나타내는 Time 클래스가 아래 코드와 같고, Time 객체를 2개 만들었다고 해보자. class Time{ private int hour; // 0시 ~ 23시 private int minute; // 0초 ~ 59분 private int second; // 0초 ~ 59초 public int getHour() { return hour; } // 이하 생략 } 이때 한 객체에서 다른 객체의 hour값을 가지고 올 때, 메서드를 통해서 iv에 접근해야 한다. t.hour; // No t.getHour(); // OK 캡슐화를 하는 이유는 데이터를 보호하기 위함이다. 그래서 위 코드의 첫 줄같이 직접 iv에 접근하는 것이 아닌 메서드를 통해 접근해야 한다. 이때 객체의 가장 바깥 껍데기(메서드를 감..

지금까지 다형성에 대해 공부한 것은 다음과 같다. 1. 조상 타입의 참조변수에 자손 타입의 객체를 선언할 수 있다. class Parent { } class Child extends Parent { } Parent p = new Child(); 2. 참조변수의 형변환: 사용 가능한 멤버 개수 조절 class Parent { } // 멤버 3개 class Child extends Parent { } // 멤버 2개 + 상속 3개 = 총 5개 Parent p = new Child(); // p로 접근 가능한 멤버는 5개 중 3개 Child c = (Child)p; // c로 접근 가능한 멤버는 5개 중 5개 3. instanceof 연산자: 형변환 가능 여부 확인 class Parent { } class C..

다형성은 - 여러 가지 형태를 가질 수 있는 능력으로, - 자바에서는 조상 타입 참조변수로 자손 타입 객체를 다루는 것을 말한다. class Parent { int pi1; // 멤버 변수 2개 int pi2; void pm1() { } // 메서드 3개 void pm2() { } void pm3() { } } class Child extends Parent { int ci; // 멤버 변수 1개 void cm() { } // 메서드 1개 } // 메인 내부에서.. Parent p = new Parent(); // OK Child c = new Child(); // OK Parent pp = new Child(); // OK. WHY???? Parent 클래스가 있고, 이를 상속받은 Child 클래스가 ..

전에 주를 이루던 코볼(Cobol), 포트란(Fortran), C언어 등은 코드를 위에서 아래로 순서대로 실행하는 절차적 프로그래밍 언어다. 그러나 이런 언어들은 빠르게 변화는 시스템의 요구를 쫓아가지 못해 점차 쓰지 않게 되었다. - 절차 지향 언어는 코드의 재사용성이 크게 떨어진다. - 적은 노력으로 변경에 대응할 수 있는 유지보수성이 떨어진다. 이에 대한 해결책으로 도입하게 된 것이 시뮬라(Simula), 스몰톡(Smalltalk) 등의 객체지향 언어였다. C언어도 이후 C++로 발전했으나 받아들이기 어려웠던 부분들이 있어 이런 단점을 보완해 자바(Java)가 나오게 되었고, 이보다 더 간결하면서 직관적인 파이썬(Python)까지 이어지게 되었다. 객체지향 프로그래밍(Object-oriented p..