일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 키-값 데이터베이스
- 숫자 형식
- SQL
- DoitSQL
- html
- 생성자
- 함수 선언
- 자바 예외
- 웹 브라우저 전쟁
- DoitSQL입문
- R1C3
- 웹브라우저 수용도
- Doit입문SQL
- 함수
- 예외
- 데이터베이스
- 크롤링
- 예제
- 자바
- 크롤링 오류
- DoIt
- 페이지분석
- 자바 오류
- 배열 예제
- HTML역사
- 숫자형식오류
- SQL입문
- 배열 3요소
- 우아한테크
- dbms
Archives
- Today
- Total
프로그래밍
[자바 기초] day11 : 추상화(abstract) 본문
728x90
반응형
2023.05.17.수
추상화
지금까지의 여러 문제를 풀다보면 어떠한 질문이 떠오를 수 있다
사실 부모 클래스는 객체로써 없는 것이 아닌가?예를 들어 동물 클래스가 있고 자식으로 강아지, 고양이를 두었을때결론적으로 강아지, 고양이 객체만 만들며 동물 클래스는 실질적으로 사용하지 않는다
결론적으론 그 의문은 사실이다
동물 클래스는 객체화 하는 것이 목표가 아닌 설계 하는 것이 목표였던 "클래스"
클래스들의 기준이 되는 것이 목표
이러한 클래스들을 추상클래스라고 한다
[ 추상클래스 ]
- 객체화(인스턴스화) 불가
- 추상 메서드를 가질 수 있다
- 생성자를 가질 수는 있지만 new를 하지 못한다(객체화 불가)
추상 메서드
추상 메서드는 오버라이딩 강제하며 바디(중괄호 부분)을 가질 수 없다
추상 메서드가 있는 부모 클래스를 상속받으면
자식 클래스에서도 무조건 해당 메소드를 오버라이딩 해야한다
만약 오버라이딩을 안한다면
- 구현을 강제하거나
- 상속 받은 클래스도 abstract로 추상 클래스화 한다
예시)
package class01;
abstract class Shape{
String name;
double area;
abstract void draw(); //추상 메서드
}
class Rect extends Shape{
@Override
void draw() {// 오버라이딩을 하지 않으면 에러 발생
System.out.println("네모 그리기");
}
}
class Circle extends Shape{
@Override
void draw() {
System.out.println("원 그리기");
}
}
class Tri extends Shape{
@Override
void draw() {
System.out.println("사각형 그리기");
}
}
public class Test02 {
public static void main(String[] args) {
}
}
728x90
반응형
'자바 > 자바 기초' 카테고리의 다른 글
[자바 기초] day12 : 컬렉션 프레임워크 (0) | 2023.05.19 |
---|---|
[자바 기초] day11 : 추상화/ 캡슐화 예제 (0) | 2023.05.18 |
[자바 기초] day11 : 캡슐화(private-getter, setter) (0) | 2023.05.18 |
[자바 기초] day10 : 상속 오버라이딩 예제 (0) | 2023.05.18 |
[자바 기초] day10 : 상속 심화(오버라이딩 점 예제) (0) | 2023.05.18 |
Comments