본문 바로가기
Java

[Java] 추상(Abstract)

by eyoo 2022. 7. 6.

프로젝트를 다른 작업자들과 협엽할때 abstract를 사용하여 작업의 능률을 올릴수있다.


먼저 클래스를 abstract를 사용해서 만든다

 

그리고 함수도 abstract를 활용해서 만드는데 함수의 내용이 없이 함수 이름만 작성한다.

public abstract class GrandParent {
	
	String name;
	int age;
	
	abstract void print();
	
	abstract void test();

}

# abstract는 클래스를 만들어놓고 상속받아서 쓰는 용도다.

 

 

이제 위의 클래스를 상속받는 클래스를 만든다.

 

public class Parent extends GrandParent {

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

	@Override
	void test() {
		// TODO Auto-generated method stub
		
	}

}

# 추상클래스를 상속받는 클래스는 모든 추상함수를 받아서 다 구현해줘야 한다.
# 함수 이름을 작업할때 동일하게 정해주어 혼선이 없게끔 한다.

 

 

만약 위 함수 중 하나의 함수만 작업하고 다음 작업자에게 나머지 함수를 넘겨줘야 한다면

 

이 클래스에도 abstract를 사용하고 작업하지 않는 override된 함수를 지워준다.

 

public abstract class Parent extends GrandParent {
	

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

}

# test 함수는 작업하지않고 print만 작업하려 한다.

 

 

이제 다음 작업자는 test함수를 넘겨준 작업자가 작업한 클래스를 상속하여 함수를 만든다.

 

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();

	}

}

# 구현이 잘된다.

 

 

 

 

 

 

댓글