| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- ToString()
- if문
- 청년적금
- 자바배열
- 자바스크립트배열
- Eclipse
- Java
- MySQL
- 신한은행청년희망적금
- 자바문자열연결
- 자바기초
- 배열함수
- 저축장려금
- 자바공부
- apachetomcat
- 개발공부
- insert
- 이클립스설치
- 청년희망적금
- 공부
- 청년희망적금미리보기
- 자바
- 2022청년희망적금
- StringBuffer
- 이클립스
- mysql오류
- 자바스크립트
- 자바강의노트
- equals()
- 참조변수
- Today
- Total
eterno
JAVA 15일차. 상속과 인터페이스 본문

자바에서 자원(resource)을 쓰는 건 메모리에 올리기 위함이다.
→ 사용 방법 ① static, ② new 연산자, ③ 상속 ④ get instance()
상속(inheritance)
: 기존 클래스를 재사용하여 새로운 클래스를 작성하는 것 (우리가 재산을 물려받는 거랑 비슷)
- 상속은 자원(빌트인 클래스)을 사용하기 위해 쓰인다.
- 상속은 부모와 자식관계이다.
- 부모 (super, parents)
- 부모는 자식한테 증여한 거는 쓸 수 있지만 자식꺼는 허락을 받아야 한다. - 자식 (sub, child)
- 부모 (super, parents)
상속 쓰는 방법
- extends(확장) 키워드 : class 클래스 상속 시 사용
- 단일 상속(simple inheritance) - impolement(구현) 키워드 : interface클래스 상속 시 사용
- 다중 상속(multiful inheritance)
*** extends, impolement는 클래스를 상속하는 키워드 로 호출하는 시점에 메모리에 올라간다.***
Class Object : 자바의 Root Class
- Object는 모든 클래스를 상속하고 있다.(= 자바는 계층 구조)
API > Class Object is the root of the class hierarchy.



Object의 함수들
: Object에는 1개의 생성자와 11개의 함수로 구성되어있다.
- Object의 생성자

- Object의 함수

11개의 함수중 알아 둬야할건 5개 정도
- clone() : 복사해서 가져오는 것
- equals() : 문자열을 비교하는 것
- get class() : 클래스 갖고 오는 것
- hashCode() : identityHashCode와 동일(위치 값)
toString() : 클래스이름. 함수이름. hashcode.주소값을 가져온다.
⇒ 구조 : getClass().getName() + '@' + Integer.toHexString(hashCode())
리턴값이 있으면 리턴값(문자열)로 반환되고 없으면 클래스이름.메소드이름.@위치값 으로 반환된다.
오버라이딩(Overriding)
: 부모클래스에 있는 함수를 자식 클래스로 가져오는(호출하는) 행위
- 부모클래스의 자원을 사용하려면(재정의하려고) 오버라이딩을 해야한다.
- 오버라이딩은 반환형, 메서드 이름, 매개변수 개수, 매개변수 자료형이 반드시 같아야한다.
→ 다르면 오버로딩
오버로딩(Overloading) 이란?
: 클래스 내부에서 함수 이름이 동일하고 함수 시그니처 (생성자 + 매개변수) 가 다른 함수
(순서, 개수, 데이터 자료형이 달라도 다른 시그니처로 봄)
ex) Member() / Member(int a) / Member(int a, String s) => 매개변수 없는 시그니처, int형 시그니처 , int형과 string형 시그니처
ex) Object 클래스의 오버로딩 : wait로 함수 이름은 같지만 매개변수가 다르다.

* 오버로딩과 오버라이딩은 함수에서 일어난다.
클래스 상속 관계에서는
1. java.lang.Object 클래스가 메모리에 먼저 올라간다.
2. Object 클래스를 상속한 Super 클래스(부모 클래스, Parent 클래스)가 메모리에 올라간다.
3. Super 클래스를 상속한 자식 클래스가 메모리에 올라간다.
예제)

예제)

예제)

예제)

풀이방법>
1. TestConstructor_1 사용자 정의 클래스 선언
2. 참조변수 tc 선언
3. = 대입 연산자 선언
4. new 연산자(키워드) 선언
5. TestConstructor_1() 매개변수 없는 기본 생성자 생성자 선언
6. new TestConstructor_1() :
JVM 이 소스코드에서 TestConstructor_1() 를 찾아서
메모리에 올리려고 한다.
이때 생성자를 메모리에 올릴 때 클래스의 상속관계를 확인한다.
7. TestConstructor_1 extends SuperClass_1
상속해준 SuperClass_1 를 먼저 메모리에 올리려고 하는데
SuperClass_1 클래스의 상속 관계를 확인한다.
8. SuperClass_1 extends Object
기본적을 상속된 Object 클래스를 메모리에 먼저 로드한다.
예제)

예제)

인터페이스(키워드)
: 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할
- 추상 함수와 상수로만 이루어져 있는 불완전한 함수를 갖는 클래스이다. (인터페이스는 껍데기만 있는 클래스)
- 함수는 [접근제한자] + [수정자] + 리턴형 + 함수이름 ([메소드]) { }이렇게 구성되어 있는데 인터페이스 함수는 { } (블럭)이 없다.
- 인터페이스 + 인터페이스를 상속한 클래스를 같이 만들어야 함 (인터페이스는 불완전한 함수여서 단독으로 사용할 수 없기 때문)
- 필요할 때 클래스에서 불러오는 거 → 인터페이스는 혼자 실행하지 못하지만 여러 개 만들 수 있다는 장점이 있다.
부모인터페이스 변수 = new 자식클래스();
ex) A_interface a_1 = new A_class();
인터페이스 만들기


패키지에다 마우스 우클릭 - New - Interface - 인터페이스 이름 쓰고 Finish 클릭

인터페이스가 포함된 클래스 만들기



패키지에서 마우스 우클릭 - new - class - interfaces - add클릭 - Choose interfaces 에 검색하면 생성한 인터페이스가 뜸 - ok클릭

인터페이스 사용방법
인터페이스 생성(블록이없는) → 상속 → 구현체 만들기(함수의 몸체( { } 안의 소스) → 부모 인터페이스 선언 → 부모 인터페이스를 참조, 선언해서 자식 클래스를 인스턴스함(new)→ 메모리에 올리면 부모에서 가져온 거 자기꺼 다 가져옴 → 오버라이딩을 찾아가 호출한다
예제)
1) A_interface.java로 인터페이스 생성

2) 불완전한 함수 A_interface.java를 구현체를 만드는 class 생성

3) 인스턴스하여 인터페이스함수를 호출한다.

'JAVA > 강의노트' 카테고리의 다른 글
| JAVA 17일차. 자료구조와 Array List (4) | 2022.08.25 |
|---|---|
| JAVA 16일차. 추상클래스, this(), 정보은닉 (9) | 2022.08.24 |
| JAVA 14일차. 복습 및 문제풀어보기 (12) | 2022.08.21 |
| JAVA 13일차. switch문, for문, while문, do-while문 (20) | 2022.08.20 |
| JAVA 12일차. 비교연산자(equals함수), scanner 클래스, if문 (10) | 2022.08.19 |