본문 바로가기

Language/JAVA

JAVA - Abstract (추상클래스)

반응형
Abstract (추상클래스)

 

 

 

최상위 클래스

public abstract class GrandParent {
	// abstract 클래스는
	// 마음대로 클래스 멤버변수와 메소드를 만들지 말고
	// abstract 클래스안에서 정해준대로 상속받아서 써야한다는 뜻
	
	
	
	String name;
	int age;
	
	// 최상위클래스에서는 하위클래스에서 개발 진행할 수 있도록 함수를 만드는데
	// 함수를 이름만 만들어 놓는다. (내용은 없다.)
	
	public abstract void print();
	
	public abstract void test();
	
}

 

 

 

상위클래스

public abstract class Parent extends GrandParent {

// 추상클래스를 상속받아서 개발하는 클래스는
// 추상 클래스의 모든 추상함수를 다 구현해 줘야 한다.
// 현재 클래스에서 개발을 진행하고 상속받았지만 개발 진행하지 않을 함수는
// 지워주고 이 클래스를 상속 받고 개발하지 않은 남은 함수를 개발할 수 있게 abstract를 기재해
// 다음 개발자가 진행할 수 있게 만들어 준다.
	
//	String name;
//	int age;
	
	@Override
	public void print() {
		// TODO Auto-generated method stub
		System.out.println("Parent");
		System.out.println("name = " + name);
	}

}

 

 

 

하위클래스

 

public class Child extends Parent {

// 남아있는 함수를 개발하기위해 Parent를 상속받는다.
// 추상클래스를 상속받아서 개발하는 클래스는
// 추상 클래스의 모든 추상함수를 다 구현해 줘야 한다.
// 하지만 상위클래스인 Parent에서 print() 함수를 구현했기 때문에
// 구현하지 않은 test()함수가 필수로 만들어야 한다고 자동으로 넘어오게 되는데
// 이때 test()함수를 완성하면 된다.

//	String name;
//	int age;
	
    // 내가 필요하다고 생각되는 변수는 추가해주면서 개발한다.
	String hobby;
	
	@Override
	public void test() {
		// TODO Auto-generated method stub
		System.out.println("Hobby = " + hobby);
	}
	
}

 

 

 

단위테스트를 진행할 Main 클래스

 

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 = "Movie";
		
		c.print();
		c.test();
		
	}

}

 

정상적으로 작동 된다면 추상클래스를 이용한 프로젝트 성공

 

이 처럼 abstract을 이용해 팀플레이를 생산성 있게 할 수 있다. 

 

반응형

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

JAVA - String Func  (0) 2022.07.06
JAVA - Interface  (0) 2022.07.06
JAVA - DOWN CASTING  (0) 2022.07.05
JAVA - Up Casting  (0) 2022.07.05
JAVA - 부모(상위)생성자 호출을 위한 super 사용법  (0) 2022.07.05