자바

자바 추상클래스 용도와 사용방법

iminu 2022. 7. 6. 12:06
public abstract class GrandParent {
	
	String name;
	int age;
	
	// 함수를 만드는데!
	// 함수를 이름만 만들어 놓는다!!!! (내용은 없다!)
	
	abstract void print();
	
	abstract void test();
	
}
public abstract class Parent extends GrandParent{

//	String name;
//	int age;
	
	@Override
	void print() {
		// TODO Auto-generated method stub
		System.out.println("Parent");
		System.out.println("name = " + name);
	}

	// 추상클래스를 상속받아서 개발하는 클래스는
	// 추상클래스의 모든 추상함수를 다 구현해 줘야 한다!

}
public class Child extends Parent{
	
//	String name;
//	int age;
	
	String hobby;
	
	@Override
	void test() {
		// TODO Auto-generated method stub
		System.out.println("Hobby = " + hobby);
		
	}

}
public class AbstractMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Child c = new Child();
		c.name = "홍길동";
		c.age = 30;
		c.hobby = "영화";
		
		c.print();
		c.test();
	}

}

추상클래스에서 필요한 함수이름들을 적어두고 추상클래스를 상속받은 클래스에서 함수를 구현하도록 설계하는 것이 목적이다. 함수 설계와 구체적인 구현을 분리해서 분업할 수 있다.

 

클래스 앞에 abstract를 붙이면 된다. 함수를 다 구현하지 않으면 Parent 클래스처럼 abstact를 붙여서 추상클래스로 만들어 줘야한다. child 클래스에서 남은 함수들을 다 구현했다. child 클래스 객체로 상속받은 속성과 함수를 이용할 수 있다.