반응형
추상 클래스
추상 클래스의 개념
실체 클래스들의 공통되는 필드와 메소드를 정의한 클래스이다.
추상 클래스는 실체 클래스의 부모 클래스 역할(단독 객체 x)
추상 클래스는 자체적으로 객체를 생성할 수 없다. 상속받은 클래스를 통해서만 생성 가능하다.
추상클래스의 기본형과 예시
// 기본형
public abstract class 클래스 {
// 필드
// 생성자
// 일반 메소드
// 추상 메소드
}
//예시
abstract class AbsClass{ //추상 클래스
int a=10; //멤버변수
abstract void Method01(); //추상 메소드
void Method02(){ //일반메소드
}
}
추상클래스 생성 방법
abstract class Animal{}
Animal animal = new Animal(); ->생성 불가.
class Bird extends Animal{...} 추상 클래스를 상속받는 일반 클래스를 생성한다.
Bird bird = new Bird(); ->생성 가능
추상 클래스의 용도
1. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일한다.
실체 클래스를 설계자가 여러 사람일 경우, 실체 클래스마다 필드와 메소드가 제각기 다 른 이름을 가질 수 있다.
2. 실체 클래스를 작성할 때 시간을 절약할 수 있다.
- 실체 클래스는 추가적인 필드와 메소드만 선언
추상 메소드
추상 메소드는 이름만 있고 실행 내용이 없다. 대신에 자식 클래스에서 필수로 재정의해야 한다.
public abstract void turnOn();
아래는 추상 클래스의 예제이다.
package com.kh.abs;
public abstract class Phone {
//추상 클래스의 구성멤버
//필드
private String owner;
//생성자
public Phone() {
}
public Phone(String owner) {
super();
this.owner = owner;
}
//일반 메소드
public void ring() {};
//추상 메소드. abstract 생략 불가.
public abstract void call();
}
자식 클래스 예제.
package com.kh.abs;
public class SmartPhone extends Phone{
//필드
int wifi;
//생성자
public SmartPhone(){
}
public SmartPhone(String owner,int wifi) {
super(owner);
this.wifi = wifi;
}
//메소드
public void internetSearch() {
System.out.println("인터넷 검색을 합니다.");
}
//추상 메소드
@Override
public void call() {System.out.println("전화를겁니다.");};
}
메인함수
package com.kh.abs;
public class main {
public static void main(String[] args) {
SmartPhone p1 = new SmartPhone("주종훈",123);
//추상 클래스로는 인스턴스 객체 생성 불가능.
//Phone phone = new Phone("홍길동");
p1.call();
}
}
출력 결과
주종훈이 전화를겁니다.
반응형
'교육 | 외부활동 > 이론_JAVA' 카테고리의 다른 글
KH_JAVA_12_중첩 클래스와 중첩 인터페이스 (0) | 2022.11.21 |
---|---|
KH_JAVA_11_인터페이스 (0) | 2022.11.18 |
KH자바수업_9_다형성 (0) | 2022.11.14 |
KH자바수업_8_상속 (0) | 2022.11.14 |
KH자바수업_7_다차원 배열, ArrayList (0) | 2022.11.11 |