일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 버블정렬
- 링크드리스트
- Android Studio
- label
- android java
- 플러터
- Firebase
- 백준
- customPopup
- FLUTTER
- 예외처리
- 안드로이드
- IOS
- TextField
- 준코딩
- 연결리스트
- text to speech
- xocde
- 안드로이드스튜디오
- Android
- swift baekjoon
- 커스텀팝업
- storyboard
- 자바
- deeplink
- Xcode
- BAEKJOON
- Swift
- C언어
- 보호와 보안
- Today
- Total
준코딩
객체지향 프로그래밍 본문
상속?
-기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다.
장점: 적은 양의 코드로 새로운 클래스 작성가능, 코드의 추가 및 변경이 매우 용이.
-생성자와 초기화 블럭은 상속되지 않는다. 멤버만 상속된다.
-자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다.
단일상속
-C++ 에서는 여러 클래스로부터 상속 받는 다중상속을 허용하지만 자바에서는 단일 상속만을 허용하기 때문에 하나 이상의 클래스로부터 상속을 받을 수 없다.
장점: 클래스 간의 관계가 보다 명확해지고 코드를 더욱 신뢰할 수 있게 만들어 준다.
Object클래스 - 모든 클래스의 조상
:모든 클래스 상속계층도의 제일 위에 위치하는 조상클래스이다. 다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동저으로 Object클래스로부터 상속받게 함으로써 이것을 가능하게 한다.
오버라이딩
-상속받은 메서드의 내용을 변경하는 것.
-상속받은 메서드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야하는 경우가 많다. 이럴 때 조상의 메서드를 오버라이딩한다.
오버라이딩의 조건
자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와
-이름이 같아야 한다,
-매개변수가 같아야 한다.
-리턴타입이 같아야 한다.
->접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경 할 수 있다.
->조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
조상 클래스의 메서드를 자손 클래스에서 오버라이딩 할 때
1.접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
2.예외는 조상 클래스의 메서드보다 많이 선언할 수 없다,
3.인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다,
오버로딩-기존에 없는 새로운 매서드를 정의하는 것 new
오버라이딩- 상속받은 메서드의 내용을 변경하는 것 change, modify
super
-자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수이다.
-상속받은 멤버와 자신의 클래스에 정의된 멤버의 이름이 같을 때 사용한다.
super() - 조상 클래스의 생성자
-this() 와 마찬가지로 super() 역시 생성자이다.
-this()는 같은 클래스의 다른 생성자를 호출하지만 super()는 조상 클래스의 생성자를 호출하는데 사용된다.
-Object클래스를 제외한 모든 클래스의 생성자 첫 줄에는 생성자를 호출해야한다. 그렇지 않으면 컴파일러가 자동적으로 'super();' 를 생성자의 첫 줄에 삽입한다.
제어자란?
-클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있다.
접근제어자(public, protected, default, private)
그 외 (static, final, abstract, native, transient, synchromized, volatile, strictfp)
static - 클래스의, 공통적인
-> 인스턴스변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수는 인스턴스에 관계없이 같은 값을 갖는다, 그 이유는 하나의 변수를 모든 인스턴스가 공유하기 때문이다.
->static이 붙은 멤버변수와 메서드, 그리고 초기화 블럭은 인스턴스가 아닌 클래스에 관계 된것이기 때문에 인스턴스를 생성하지 않고도 사용할 수 있다.
접근 제어자
-멤버 또는 클래스에 사용, 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할
제어자 같은 클래스 같은 패키지 자손 클래스 전체
public o o o o
protected o o o
default o o
private o
접근 제어자를 이용한 캡슐화
->접근 제어자를 사용하는 이유는 클래스의 내부에 선언된 데이터를 보호하기 위해서이다.
->데이터가 유효한 값을 유지하도록, 또는 비밀번호와 같은 데이터를 외부에서 함부로 변경하지 못하도록 하기 위해서는 외부로부터의 접근을 제한하는 것이 필요하다. 이것을 데이터 감추기 라고 하며 객체지향개념의 캡슐화에 해당하는 내용이다.
접근 제어자를 사용하는 이유
-외부로부터 데이터를 보호하기 위해서
-외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서.
제어자의 조합
대상 사용가능한 제어자
클래스 public default final abstract
메서드 모든 접근 제어자, final abstract static
멤버변수 모든 접근 제어자 final static
지역변수 final
주의사항
1.메서드에 static과 abstract를 함계 사용할 수 없다
2. 클래스에 abstract와 final을 동시에 사용할 수 없다.
3. abstract메서드의 접근 제어자가 private일 수 없다.
4.메서드에 private과 final을 같이 사용할 필요는 없다.
다형성이란?
-여러 가지 형태를 가질 수 있는 능력, 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 하는것.
'프로그래밍 > 자바' 카테고리의 다른 글
BubbleSort 버블정렬 (0) | 2018.12.10 |
---|---|
예외처리 (0) | 2018.11.29 |
객체지향 프로그래밍-2 (0) | 2018.11.29 |
객체지향언어-1 (0) | 2018.11.26 |
객제지향언어 (0) | 2018.11.26 |