JAVA 추상 메서드와 추상 클래스

10340 단어 TILJavaJava

추상 메서드

추상 메서드는 선언부만 정의하고 구체적인 내용은 비워놓은 메서드이다. 구체적인 내용을 적지 않았기 때문에 이를 상속받은 하위 클래스에서는 사용하려면 반드시 수현하라는 의미 이다. 추상 메서드를 선언하는 방법은 제어자 abstract를 메서드명 앞에 붙여주면 된다. 그리고 구체적인 내용이 없으므로 괄호{}를 생략하고 세미콜론을 붙여 준다.

abstract void methodA();

추상 클래스

추상 클래스는 추상 메서드를 멤버로 가지는 클래스이다. 추상 클래스는 일반적인 메서드도 가질 수 있지만 추상 메서드를 하나라도 포함하는 클래스이다. 추상 클래스는 인스턴스를 생성할 수 없다. 그러므로 추상 크르래스는 그 자체로 사용되기보다는 자식 클래스를 완전하게 작성하기 위한 기본적인 틀로써 사용된다.

abstract class Cellphone{

	abstract void methodA();
}

추상 클래스는 추상 메서드를 포함하기 때문에 이를 상속받은 자손 클래스는 반드시 추상 메서드를 구체적으로 작성해주어야된다. 추상 클래스를 선언하기 위해서는 앞에 제어자 abstract를 붙여 선언한다. 내부에 추성 메서드가 있다면 반드시 클래스명 앞에 abstract를 붙여야 한다.

abstract class Pokemon {
	String name;
	
	abstract void attack();
	abstract void sound();
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

class Pikachu extends Pokemon {

	Pikachu() {
		this.name = "피카츄";
	}
	@Override
	void attack() {
		System.out.println("전기 공격");
	}

	@Override
	void sound() {
		System.out.println("피카 피카!");
	}
	
}

class Squirtle extends Pokemon {

	Squirtle() {
		this.name = "꼬부기";
	}
	
	@Override
	void attack() {
		System.out.println("물 공격");
	}

	@Override
	void sound() {
		System.out.println("꼬북 꼬북!");
	}
	
}

public class AbstractClass1 {

	public static void main(String[] args) {
		Pikachu pick = new Pikachu();
		System.out.println("이 포켓몬은 "+pick.getName());
		pick.attack();
		pick.sound();
		Squirtle squ = new Squirtle();
		System.out.println("이 포켓몬은 "+squ.getName());
		squ.attack();
		squ.sound();
	}

}

좋은 웹페이지 즐겨찾기