coding

[국비 코딩 수업 24~26일차!] 12. Java 상속, 패키지

동기부엉이 2024. 2. 23.
반응형

상속 (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

 

리스트는 중복 검사를 하지 않아서 데이터 유지상 더 많이 사용함.

반응형

댓글