| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Swift
- BAEKJOON
- swift baekjoon
- 커스텀팝업
- customPopup
- label
- FLUTTER
- 보호와 보안
- TextField
- 안드로이드
- 예외처리
- Xcode
- 버블정렬
- 플러터
- 안드로이드스튜디오
- Android Studio
- 연결리스트
- C언어
- 자바
- deeplink
- text to speech
- 백준
- Firebase
- xocde
- 링크드리스트
- 준코딩
- IOS
- Android
- storyboard
- android java
- Today
- Total
준코딩
객체지향 프로그래밍-2 본문
조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있다.
반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수는 없다.
참조변수의 형변환
자손타입 -> 조상타입 : 형변환 생략가능
자손타입 <- 조상타입 : 형변환 생략불가
캐스트연산자를 사용하면 서로 상속관계에 있는 클래스 타입의 참조변수간의 형변환은 양방향으로 자유롭게 수행될 수 있다.
그러나 참조변수가 참조하고 있는 인스턴스의 자손타입으로 형변환을 하는 것은 허용되지 않는다.
-> 캐스트연산자: 바꾸자하려는 변수 또는 데이터 앞에 (바꾸려는 자료형) 형태로 작성하는것.
instanceof연산자
-참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보는 연산자.
추상클래스?
->클래스를 설계도에 비유한다면, 추상클래스는 미완성 설계도에 비유할 수 있다.
1.클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 미완성 메서드를 포함하고 있다는 의미이다.
2.추상클래스로 인스턴스는 생성할 수 없다. 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.
추상메서드?
->선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것
1.키워드 abstract를 앞에 붙여 주고, 구현부가 없으므로 괄호{}대신 문장의 끝을 알리는 ; 을 적는다.
추상화-클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업
구체화-상속을 통해 클래스를 구현, 확장하는 작업.
인터페이스
-일종의 추상클래스이다. 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 구현된 것은 아무 것도 없고 밑그림만 그려져 있는 기본 설계도 라고 할수 있따.
인터페이스의 이해
-클래스를 사용하는 쪽과 클래스를 제공하는 쪽이 있다.
-메서드를 사용하는 쪽에서는 사용하려는 메서드의 선언부만 알면된다.
인터페이스의 작성
-클래스를 작성하는 것과 같다. 다만 키워드로 class 대신 interface를 사용한다는 것만 다르다. 접근제어자로 public 또는 default를 사용할 수 있다.
인터페이스의 상속
-인터페이스는 인터페이스로부터만 상속받을 수 있다. 클래스와는 달리 다중삭속, 즉 여러 개의 인터페이스로부터 상속을 받는 것이 가능하다.
인터페이스 구현
-그 자체로는 인스턴스를 생성할 수 없으며, 자신에 정의된 추상메서드의 몸통을 만들어주는 클래스를 작성해야하는데, 그 방법은 추상클래스가 자신을 상속받는 클래스를 정의하는 것과 다르지 않다. 다만 클래스는 확장한다는 의미의 키워드 extends 를 사용하지만 인터페이스는 구현한다는 의미의 키워드 implements를 사용한다.
인터페이스의 장점
1.개발시간을 단축시킬 수 있다.
2.표준화가 가능하다
3.서로 관계없는 클래스들에게 관계를 맺어 줄 수 있따
4.독립적인 프로그래밍이 가능하다.
'프로그래밍 > 자바' 카테고리의 다른 글
| BubbleSort 버블정렬 (0) | 2018.12.10 |
|---|---|
| 예외처리 (0) | 2018.11.29 |
| 객체지향 프로그래밍 (0) | 2018.11.27 |
| 객체지향언어-1 (0) | 2018.11.26 |
| 객제지향언어 (0) | 2018.11.26 |