티스토리 뷰

JAVA/PRIMER

[JAVA] 추상클래스

yulrang 2018. 4. 19. 14:07
// 추상 클래스 : abstract class
// 			 일반적인 클래스와 마찬가지로 필드와 메소드를 가질 수 있음
//			 그러나 인스턴스(객체)를 생성하지 못함.

abstract class H {
	int a=1;
	void print(){
		System.out.println("abstract");
	}
}

class H1 extends H {
	public H1(){
		super.print();
	}
}

public class 추상클래스1 {

	public static void main(String[] args) {
		// H a = new H(); 불가능!
		H1 b = new H1();
	}

}
abstract


abstract class 악기{
	int size;
	
	void method(){ System.out.println(size); }
	
	// 추상메소드 : abstract 메소드
	//			내용을 가지고 있지 않음
	// ★ 추상클래스에 있는 추상 메소드를 상속한 자식클래스들은 반드시 추상메소드를 구현해주어야 함
	
	// 모든 자식 클래스에서 공통적인 기능(메소드)를 만드는 것을 강제하고 싶을 때 선언 
	abstract void sound();
}

class 피아노 extends 악기 {
	void sound(){
		System.out.println("피아노 소리");
	}
}
class 바이올린 extends 악기 {
	void sound(){
		System.out.println("바이올린 소리");
	}
}

public class 추상클래스2 {

	public static void main(String[] args) {
		피아노 p1 = new 피아노();
		p1.sound();
	}

}
피아노 소리



예시
abstract class Pet{
	String name;
	
	public Pet(){
		this.name = name;
	}
	abstract void bark();
}

class Dog extends Pet{
	public Dog(){
		super.name = "강아지";
	}
	void bark(){
		System.out.println(name+": 멍멍");
	}
}
class Cat extends Pet{
	public Cat(){
		super.name = "고양이";
	}
	void bark(){
		System.out.println(name+": 야옹");
	}
}
public class 추상클래스예제1 {

	public static void main(String[] args) {
		Dog d = new Dog();
		Cat c = new Cat();
		
		d.bark();
		c.bark();
	}

}
강아지: 멍멍
고양이: 야옹

'JAVA > PRIMER' 카테고리의 다른 글

[JAVA] 인터페이스  (0) 2018.04.19
[JAVA] 익명클래스  (0) 2018.04.19
[JAVA] 상속  (0) 2018.04.19
[JAVA] Random  (0) 2018.04.19
[JAVA] Math  (0) 2018.04.19
댓글