교육 | 외부활동/이론_JAVA

KH자바수업_10_추상 클래스

wn1331 2022. 11. 17. 20:49
반응형

추상 클래스

 

추상 클래스의 개념

실체 클래스들의 공통되는 필드와 메소드를 정의한 클래스이다.

추상 클래스는 실체 클래스의 부모 클래스 역할(단독 객체 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();
	}

}

출력 결과

주종훈이 전화를겁니다.

 

 

 

 

반응형