상속 (Inheritance)
ㄴ 상속은 확장의 개념 (extance를 사용하는 이유)
ㄴ 상속 제외 : 생성자, private
부모 속성에다가 자식 속성을 부여하면
class Inheritance의 속성을 가지고 자식요소에서도 생성자를 통해 출력이 가능해짐.
부모의 생성자를 호출할 있음.
1) super( ) : 부모의 생성자를 호출
ㄴ 단 한번만 호출이 가능
ㄴ 반드시 생성자의
가장 처음에서 사용
2) super : 부모의 주소를 저장하고 있는 참조변수 < = > this( )
자식 인자(B) 있는 생성자를 만들었을 경우 명시적으로 설정해줘야 오류가 나지 않는다.
상속의 종류
* 단일 상속
* 다중 상속
자바에서는 단일 상속만 지원한다.
인터페이스에서는 다중 상속이 지원된다.
* 상속 설계
중복 기능을 가지지 않게 한다.
부모 클래스는 반드시 최소의 기능을 갖게 한다.
부모 클래스는 재사용이 가능해야 한다.
* 부모 클래스와 자식 클래스의 참조 관계
서로 다른 클래스들끼리 절대로 참조할 수 없다.
* 부모 - 자식 클래스는 참조가 가능하다.
ㄴ 그러나 extends를 사용해 부모와 자식관계를 연결해주면 사용이 가능해진다.
ㄴ 단 부모는 자신이 물려준 것에 대해서만 참조가 가능하다.
ㄴ부모는 자식을 참조할 수 있지만 자식은 부모를 참조할 수 없다.
어떤 인스턴스를 생성할지 결정할 수 없는 경우
A, B, C, D
A a = new D();
A a = new B() or new C() or new D ()
...B b = (b) a;
여러 개의 자식 인스턴스를 관리
A a[ ] = new A[5];
for(int i =0; i < 5; i++) {
a[i] = new A( );
}
a[0] = new B();
a[1] = new C();
a[2] = new B();
a[3] = new D();
a[4] = new C();
메서드의 오버라이딩(Overrriding)
ㄴ 다형성을 구현
1. 오버로딩.
- 메서드
- 다형성
- 중복 정의 (똑같은 메소드를 여러 개 만드는 것)
2. 오버라이딩
-메서드
-다형성
-재정의
오버라이딩은 상속에서만 사용이 가능한 문법.
오버라이딩은 부모거를 그대로 가져와서 사용.
void display(int i) {
display( );
System.out.print("고객주소 : " + address);
}
부모 클래스를 통해 private를 사용하면 생성자를 생성하고 getter / setter를 생성해야 한다
(그러나 해당 코딩에서는 setter는 그냥 생성하지 않았음)
부모로서의 최소한의 구조를 갖춰야 함.
예를 들어 자동차를 만든다고 가정 했을 때, 자동차에 꼭 필요한 부분을 설정하는 것과 같음.
(공통된 ex) 엔진, 바퀴, 이름 등.
추상(abstract) 클래스, 추상 메서드
추상 메서드
ㄴ 내용없이 선언만 되어있는 메서드.
ㄴ 매소드 이름 앞에 abstract 키워드 사용.
ㄴ 반드시 오버라이딩을 해야 한다.
추상 클래스
ㄴ 추상 메서드를 1개 이상 보유.
ㄴ 반드시 클래스 앞에 abstract 키워드 사용.
ㄴ 절대로 인스터스를 생성할 수 없다.
final
* 클래스, 메서드, 변수에서 사용 가능.
* 변수
final int = 10;
값을 보호하기 위한 목적이 있음.
i = 100; (x)
final int MAX = 100;
if (x < 100) { ... }
*메서드
final void method() { ... }
메서드를 변경할 수 없다는 것은 곧 오버라이딩을 못하게 하는 것.
*클래스
final class A {...};
클래스를 변경할 수 없다는 것은 곧 상속을 못하게 하는 것.
*오브젝트 클래스 (object)
9. 인터페이스 ( interface )
(1) 특징
1) 클래스를 만들기 위한 설계도
2) 완전 추상클래스
3) implements
4) 다중 상속 지원
(2) 활용
1) 의존성(independency)을 최소화(디자인 패턴)
2) 표준화를 위한 약속, 규칙
10. 패키지( Package )
(1) 묶음 : 클래스들을 폴더로 묶어준 것
(2) 효과
1) 필요한 클래스들을 적재 적소에 사용 가능
first.second.third.fourth.pPackTest.java
javac -d . 파일명
2) 이름 충돌 방지
(3) 패키지 작성
1) 패키지 컴파일
first.second.third.forth..PackTest.java
javac 파일명.java
2) 압축 : jar.exe
- 압축할 때 : -c -f -v
- 압축 풀 때 : -ㅌ -ㄹ -ㅍ
- jar -cvf bookpack.jar BookPack
(4) propected
보완과 편의를 동시에 제공할 수 있는 방법.
외부로부터 보호를 하면서도 자식에게 프로택티드를 물려줄 수 있는 방법.
(5) Built-in Package
-java.lang
-java.util
-java.text
-java.math
-java.net
-java.io
-java.nio
11. Collection(java.utill)
변수 => 배열 => 클래스 => 클래스 + 연결리스트 => 컬렉션
(1) set
- 정렬 순서가 없다.
- 중복되지 않는다.
- HashSet, LinkedHashSEt, TreeSet, ...
중복을 걸러주는 정렬기능.
(2) List
- 정렬 순서가 있다.
- 중복 가능
- ArrayList, Vector, LinkedList
리스트는 중복 검사를 하지 않아서 데이터 유지상 더 많이 사용함.
댓글