티스토리 뷰
상속 :
부모클래스(super class) 로 부터 모든 자원을 물려받는 개념
반드시 extends 키워드를 이용하여 상속받을 부모클래스를 지정.
단, 한번에 하나의 클래스만 상속받을 수 있다.
예)
public class A{
}
public class B{
}
public class C extends A{ // 가능
}
public class C extends A, B{ // 불가능
}
public class D extends A{ // 가능
}
public class E extends D{ // 가능
}
상속이 가능한 부모클래스의 변수 및 메서드
1. 부모와 자식이 같은 패키지에 존재 할 경우
public int a; char c;
private 이 붙은 메서드나 변수는 상속 불가능
2. 부모와 자식이 다른 패키지에 존재 할 경우
public int a;
private 이 붙은 메서드나 변수는 상속 불가능
아무것도 없는(default) 메서드나 변수는 상속 불가능
=======================================
접근 제한자(지정자)
: 외부로부터 클래스 자신을 보호하기 위해 접근을 제한하는 것.
종류
public : 어디서든지 모두 허용
protected : 상속되는 자식클래스까지만 허용
default : 동일 패키지 내에서는 모두 허용
private : 본인 클래스 내에서만 사용 가능
접근 제한자는 클래스 선언, 메서드 선언, 생성자 선언, 변수 선언시
사용 가능.
단, 클래스 선언시 private은 사용 불가 !!!
=============================================
메서드 선언 기법
1. Overloading : 동일한 메서드이름을 이용하여 다양한 데이터를 처리할 경우.
조건 : 매개변수의 갯수 또는 동일 갯수일 경우에는 데이터 타입이 달라야 한다
예)
public void test(){
}
public void test(int a){ // 가능
}
public void test(String s){ // 가능
}
public void test(int a, int b){ // 가능
}
public void test(int n){ // 불가능 (매개변수 갯수와 데이터타입이 동일)
}
2. Override : 반드시 상속이 필요
부모로부터 물려받은 메서드를 자식 클래스에서 수정하여 사용할 경우
조건 : 물려받은 메서드의 { } 내부만 수정 가능.
만약 메서드 선언부를 수정하면 자식클래스가 선언한 메서드로 변경.
예)
public class A{ // 부모클래스(super class)
public A(){
}
public void test(){ // 부모클래스(super class)가 선언한 메서드
System.out.println(10+30);
}
}
public class B extends A{ // 자식 클래스
public B(){
}
public void test(){ // 부모 클래스인 A로부터 물려받은 메서드
int a=10+30+50; // 수정내용
System.out.println(a); // 수정내용
}
}
public class C extends A{ // 자식 클래스
public C(){
}
public int test(){ // 이 메서드는 선언부를 수정하였기 때문에(반환타입변경)
return 100; // A클래스가 아닌 C클래스 선언 메서드.
}
}
public class D extends A{ // 자식(파생) 클래스
public D(){
}
public void test(int n){ // 이 메서드는 선언부를 수정하였기 때문에(매개변수추가)
System.out.println(n); // A클래스가 아닌 D클래스 선언 메서드
}
}
============================================
클래스 종류
1. 메인 클래스 : public static void main(String[] args){ } 포함
main() 메서드는 프로젝트의 메인 스레드(프로세스 개념)로 사용된다.
프로젝트 내에는 단 1개만 존재해야 한다.
2. 일반클래스 : public static void main(String[] args){ } 포함하지 않는 클래스
단, 생성자는 필요
3. 파생클래스 : super class에 의해서 선언된 클래스
부모클래스를 상속받는 자식클래스
4. 추상클래스 : abstract 키워드를 이용하여 선언
예) public abstract class Test{
}
5. interface 클래스 : interface 키워드를 이용하여 선언
예) public interface Test{
}
============================================
프로젝트를 진행 할 때, 코드를 먼저 짜려고 하지 말고 내부 로직을 생각 후 해야할 작업을 먼저 주석 처리한 뒤 메서드 껍데기만 만들어놓은 상태에서 진행한다.
또한 데이터 흐름도를 계속 그리는 연습이 필요하다.
==========================================================
오늘의 예제: 주어진 이미지 파일과 데이터를 활용하여 간단한 html 파일을 만드는 코드를 작성하라.
결과 페이지 화면:
내 코드:
github.com/Choonham/Choonham-2020.03.10-Spring-Class/tree/master/book_java_html/src/com/choonham
Feedback: BookClass와 PressClass의 상속을 제대로 구현하지 못하여 강사님의 코드를 보고 첨삭했다. 이외의 부분은 고칠 부분이 없이 잘 구동이 되었다.
모범 답안:
끝!
'[JAVA] > JAVA' 카테고리의 다른 글
<Thread> Priority 지정하기 (0) | 2021.03.31 |
---|---|
<Thread> Sleep을 이용한 간단한 타이머 구현 (0) | 2021.03.31 |
<Thread> Thread 겉핥기 (0) | 2021.03.30 |
"웹 개발자 양성과정" 03.24 <Interface & Abstract Class> (0) | 2021.03.25 |
[JAVA] Comparable & Comparator (0) | 2021.03.25 |
- await
- 맛집
- react
- Promise
- 정보보안기사 #실기 #정리
- AsyncStorage
- react-native
- 인천 구월동 맛집
- 파니노구스토
- redux
- Async
- javascript
- 인천 구월동 이탈리안 맛집
- redux-thunk
- 이탈리안 레스토랑
- Total
- Today
- Yesterday