일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 2차원배열
- 2차원 리스트
- 값 넣기
- 마우스 올릴때
- list
- select
- 배열 값
- 값 비교
- Integer 값 비교
- 무한 파라미터
- String 찾기
- r타입 비교
- 배열 생성자
- 비교
- 2차원 list
- 인티저 값 비교
- jsp
- R 비교
- 같은지
- R타입비교
- 옵션태그
- 리스트
- 배열 값 추가
- 마우스 올리면
- String 검색
- 멀티 페이지
- 값 추가
- jsp 테이블
- 파라미터 무한
- 플러터 null
- Today
- Total
JAVA를 JAVA라
[JAVA] Abstraction, 추상화 본문
abstract class Animal{ //부모 클래스, 슈퍼 클래스, 상위 클래스
String name;
int age; //필드 생성
//생성자
public abstract void sleep(); //꼭 필요하니까 나를 내려받는 클래스에서 무조건 만들어!
public abstract void eat();
}
위와 같이 abstract 함수가 하나라도 있으면 그 클래스는 추상 클래스입니다.
abstract가 붙은 함수는 상속받은 자식클래스에서 반드시 구현해주어야 합니다.
class Cat extends Animal{ //자식 클래스, 하위 클래스
@Override
public void sleep() { //추상화 되었으니까(완벽하지 못하니까) 여기서 만들어 채워주세요
} //이거에서 진화되는게 인터페이스!!
@Override
public void eat() { //부모에게 없는 {괄호}만 붙여줘도 생성
}
}
이렇게 꼭 오버라이드 해주어야 합니다.
public static void main(String[] args) {
Cat cat = new Cat();
// Animal animal = new Animal(); //이렇게 슈퍼 클래스를 객체화 하지 못하게 하는 것이 추상화
}
추상 클래스는 객체화 할 수 없습니다.
추상화
클래스 만드는 목적? -> 인스턴스 생성을 위해
추상화는 클래스를 대략적으로 만들어서 인스턴스를 생성할 수 없어요.
왜 존재해야 하지?
자바에서는 추상화라는 개념을 구현할 수 있습니다.
일단 추상이라는 의미부터 보겠습니다.
추상이라는 것은 현실화 되어질 필요가 없는 클래스를 말합니다.
객체생성 안함! 상속을 위해 존재한다
자바에서는 객체지향을 통해 프로그램이 실행되는데
이 추상이라는 개념을 클래스에 적용시키면
자신의 인스턴스를 발생시킬 수 없는 형태로 만들어집니다.
이렇게 인스턴스화 할 필요는 없지만 상속개념에서 중요한 위치를
가지는 클래스를 보통 추상클래스로 선언하여 사용합니다.
추상 클래스 선언 규칙
1. 클래스에 정의된 메소드 중 추상 메소드가 하나라도 있다면
해당 클래스는 무조건 추상 클래스가 됩니다.
2. 추상 메소드는 메소드 바디가 없는 형태 {}이고
abstract라는 키워드를 리턴 타입 앞에 선언합니다.
파라미터 괄호 뒤에 세미콜론;을 붙여줍니다.
ex. public abstract void print();
괄호 붙으면 무조건 메소드!
3. 추상 클래스는 자신의 인스턴스를 발생시킬 수 없습니다.
하지만 생성자, 메소드, 필드는 모두 선언/정의 가능합니다.
상속도 가능합니다.
또한 super type으로 전개 가능하므로 다형성도 적용 가능합니다.
4. 만약 추상 메소드가 하나라도 없을 때 클래스를 추상화 하고 싶다면
abstract라는 키워드를 붙여 추상화 시킬 수 있습니다.
'JAVA > JAVA 수업' 카테고리의 다른 글
[JAVA & DB] 21.06.18 (0) | 2021.06.18 |
---|---|
[JAVA] 21.06.16 (0) | 2021.06.16 |
[JAVA] 상속과 오버라이드 (0) | 2021.06.15 |
[JAVA & DB] 21.06.15 (0) | 2021.06.15 |
[JAVA] Linked List (0) | 2021.06.11 |