티스토리 뷰
// 추상 클래스 : 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 |
댓글