[java]추상 클래스, 추상 메소드(abstract)

심심이·2024년 2월 6일
1

java

목록 보기
33/46

왜 추상 메소드가 필요할까?

팀플하는데 메소드를 서로 다른 이름으로 한다면? 혹은 메소드를 안 만들었다면?
===>강제적으로 만들게 해야 한다.
이 때 추상메소드가 필요하다.

	 // 추상 메소드(=미완성 메소드)
	// 추상 메소드가 하나라도 있으면 클래스가 추상 클래스가 되어야 한다. 
public abstract class CommonMember {
	public abstract String getInfo();
}

=> 상속받아간 자식 클래스들은 추상 클래스를 구현해주지 않으면 안된다.

주의점

  • 추상 메소드는 객체화 할 수 없다.

CommonMember cmbr = new CommonMember(); // 오류!!

추상 메소드 코드 예시

public abstract class CommonMember {

	 // 추상 메소드(=미완성 메소드)
	// 추상 메소드가 하나라도 있으면 클래스가 추상 클래스가 되어야 한다. 
    // 추상 클래스의 경우 추상 메소드가 있어도 다른 메소드를 쓸 수 있다.
	public abstract String getInfo();

 }
 
 public class Gujikja extends CommonMember {
    // >>추상 메소드를 오버라이딩해서 구현함, 메소드 오버라이딩 << 
	// === 구직자의 정보를 한줄로 출력해주는 메소드 생성하기 ===
	@Override
	public String getInfo() {
		
		// eomjh   qWe******    엄정화    961020   여     27        2024-01-31 10:30:40
		
		StringBuilder sb = new StringBuilder();
		sb.append(super.getId() +"\t");
		
		sb.append(super.getPasswd().substring(0, 3) + "*".repeat(this.getPasswd().length() - 3) +"\t");
		
		sb.append(getName()+"\t");
		
		sb.append(jubun.substring(0, jubun.length()-1) +"\t");
		
		sb.append(getGender()+"\t"); // 성별
		
		sb.append(getAge()+"\t"); // 만나이
		
		sb.append(super.getRegister_day());
		
		return sb.toString();
		
	} // end of String getInfo()------------------- 
	

 }
 
 public class Company extends CommonMember {
 	@Override
	public String getInfo() {
		
		DecimalFormat df = new DecimalFormat("#,###"); // 숫자를 3자리 마다 콤마(,)를 찍어주는 것이다.
				
		         //  회사명               업종              사업자등록번호               자본금
		return super.getName() + "\t" + job_type + "\t" + business_number + "\t" + df.format(seed_money) + "원"; 
	}// end of public String getInfo()-------------------------


 
 }
 
profile
개발하는 심심이

0개의 댓글

관련 채용 정보