반응형
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 |