언어/java

상속

Eprld 2024. 2. 12. 17:24

상속 - 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는  것

          기존에 정의되어 있던 클래스 부모 클래스(parent class) 또는 기초 클래스(base class) 라고함

          새롭게 작성되는 클래스 자식 클래스(child class) 하위 클래스(sub class) 파생 클래스(derived class) 라고 함

 

장점 

1. 기존의 클래스 재활용 가능

2. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성하면, 자식 클래스에선 해당 멤버를 작성하지 않아도 됨

3. 클래스 간의 계층적 관계를 구성함으로서 다형성의 문법적 토대를 마련

 

자식 클래스

 

class 자식클래스이름 ectends 부모클래스이름{...}

 

super 키워드 - 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는 데 사용하는 참조변수

 

인스턴스는 this  부모,자식 이름 같을 경우 super

 

메소드 오버라이딩 - 부모 클래스에서 이미 정의된 메소드를 자식 크래스에서 같은 시그니처를 갖는 메소드로 다시 정의

 

조건

1. 메소드의 선언부는 기존 메소드와 완전히 같아야 함

2. 부모 클래스의 메소드보다 접근 제어자를 더 좁은 범위로 변경할 수 없음

3. 부모 클래스의 메소드볻 더 큰 범위의 예외를 선언할 수 없음

 

다형성 - 하나의 객체가 여러 가지 타입을 가질 수 있는 것

 

참조 변수의 다형성 - 부모 타입의 참조변수로 자식 타입의 인스턴스를 참조할 수 있도록 하고 잇음

                                  참조 변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 같거나 적어야 참조할 수 잇음

 

타입 변환 

1.서로 상속 관계에 있는 클래스 사이에만 타입 변환을 할 수 있음

2. 자식 클래스 타입에서 부모 클래스 타입으로의 타입 변환은 생략 가능

3. 부모 클래스 타입에서자식 클래스 타입으로의 타입 변환은 반드시 명시해야 함

 

instanceOf 연산자 - 런타임에 참조 변수가 실제로 참조하고 있는 인스턴스의 타입 확인을 도와줌

 

참조변수 instanceof 클래스이름  - true false 반환

 

추상 클래스 메소드 - 자식 클래스에서 반드시 오버라이딩 해야만 사용할 수 있음

 

abstract 반환타입 메소드이름();

 

인터페이스 - 다중 상속, 추상 메소드와 상수만을 포함함

 

class 클래스이름 implements 인터페이스이름{..}

 

 

내부 클래스 - 하나의 클래스 내부에 선언된 또다른 클래스

 

장점 

1. 내부클래스에서 외부 클래스의 멤버에 손 쉽게 접근 가능함

2.서로 관련있는 클래스를 논리적으로 묶어서 표현함으로써, 코드의 캡슐화를 증가시킴

3. 외부에서는 내부 클래스에 접근할 수 있도로그 코드의 복잡성을 줄일 수 잇음

 

종류

1. 정적 클래스(static class)  - 외부 클래스의 클래스 메소드에 사용될 목적

2. 인스턴스 클래스(instance class) - static 키워드를 가지지 않는 클래스

3. 지역 클래스(local class) - 외부 클래스의 메소드나 초기화 블록에 선언된 클래스

4. 익명 클래스(anonymous class) - 선언과 동시에 객체 생성, 단 하나의 객체만을 생성

'언어 > java' 카테고리의 다른 글

class 캡슐화  (0) 2024.02.16
public  (0) 2024.02.16
Class  (0) 2024.02.12
자바 Class  (0) 2024.02.12
제이쿼리  (0) 2024.01.28