본문 바로가기

DATA 분석 교육 과정 (2024.02~08)/JAVA

JAVA_추상화(추상메소드, 추상클래스)

728x90
추상메소드

 

-  선언되어 있거나 구현되어 있지 않은 메소드(중괄호가 없는 메소드)

abstract키워드를 사용하여 선언

 ex) public abstract int getValue();

- 추상 메소드는 서브 클래스(자식 클래스)에서 오버라이딩 필수  

 

추상클래스

 

 - 추상메소드를 하나라도 가진 클래스 (완벽하지 않은 추상적인 설계도라 생각하기)

 - abstract키워드를 사용하여 선언

 ex) public abstract class Parent

 

추상메소드와 추상클래스 필요성

 

똑같은 기능이지만 호출하는 이름이 다르기 때문에 약속을 위해 기본적인 기본틀을 만들어줌

public class Volvo extends Car {/// 상속받기위해 extends 사용하지만 오류
                                // 그이유는 car에 추상적 메소드
	
      //강제적으로 꼭 구현해야 하는 메소드 나오게 하기            
	@Override
	public void runner() {
		 System.out.println("자율주행하는 runner");
	}

 

public abstract class Car { // 설계도 만들기 
	// 추상클래스!
	// 완벽하지 않은 설계도 >> 미완성의 설계도 
	// 언제 완성되느냐?? 해당 클래스 물려받은 자식 클래스에서 설계도 완성 진행 

	// 자동차가 기본으로 가지고 있어야 하는 내용을 정리한 클래스
	
	int tire = 4;
	
	public abstract void runner() ;
//	{
//		System.out.println("씽씽 앞으로 달리기~!");
//	}
	  // 추상 메소드
	  // 추상메소드는 상속을 받은 자식 클래스에서 무조건 강제적으로 구체화 할수 있는 강제성을 갖는다. 
	
	
	// 추상적인 내용 외 일반 적인 내용도 들어 갈 수 있음
	public void color() {
		System.out.println("흰색의 자동차!");
	}
	
}
  public class CarMain {
	public static void main(String[] args) {
	
		// 객체생성은 완벽히 구현된 클래스에서만 생성이 가능하다. 
		Volvo volvo = new Volvo();
		volvo.runner ();
		
		// 추상클래스는 객체를 생성할 수 없다. 
		// 설계도로만 기능이 정의된다. 
		// Car car = new Car();	
	}
}

 

연습하기 

 

월급계산 프로그램 만들기 (구체적 클래스> 추상 클래스)

 

public class RegularEmployee {

	//1. 필드 적어주기
	private String empno;//사번
	private String name; // 이름
	private int  pay; //연봉
	private int bonus; //보너스
	 
	 
	 // 2. 생성자 메소드 만들기 
	public RegularEmployee(String empno, String name, int pay, int bonus) {
		// super();//부모 클래스의 불러오는 기능
		this.empno = empno;
		this.name = name;
		this.pay = pay;
		this.bonus = bonus;
	}

     // 3.해당 직원의 월급을 계산하는 메소드
	public int getMoneyPay() {
//		int result = (pay+bonus)/12;
//	     return result;	     
	     // 또는
		return (pay+bonus)/12;	     
	}    

    public String print() {
	    return empno + ":" +name + ":"+pay;	 
 } 
}

 

public class EmployeeMain {
	public static void main(String[] args) {
		RegularEmployee regular = new RegularEmployee (" SMHRD001", "홍길동",4000,400);
       System.out.println(regular.print());
       System.out.println(regular.getMoneyPay());		
	
	}
}

출처: 스마트인재개발원

728x90
반응형

'DATA 분석 교육 과정 (2024.02~08) > JAVA' 카테고리의 다른 글

JAVA_OOP  (0) 2024.03.26
JAVA_JDBC  (0) 2024.03.19
JAVA_상속  (0) 2024.03.18
JAVA_Music Playlist 만들기  (0) 2024.03.18
JAVA_Collection, ArrayList  (0) 2024.03.17