[JAVA][패스트캠퍼스]추상클래스

추상클래스

  • 추상 메서드를 포함한 클래스
  • 추상메서드 : 메서드 바디(=구현부{})가 없는 메서드
  • abstract 예약어 사용
  • 추상클래스는 new(인스턴스화)할 수 없음 cf)concrete class
  • 객체생성이 불가능한 클래스(=미완성 클래스) -> 추상메서드가 호출되면 안되기 때문에 인스턴스 생성을 못하도록 차단
  • 추상클래스는 추상메서드,일반메서드,생성자,인스턴스 변수 등을 가질 수 있다.
  • 인스턴스 생성은 불가능하지만 상속은 가능하며 다형성 활용도 가능

추상클래스 구현

Computer.java

package abstractex;

public abstract class Computer {
	//아래 두 메서드는 하위위클래스가 알아서 구현해야되는 메서드
	public abstract void display();
	public abstract void typing();
	
	//아래 두메서드는 공통으로 쓰이는 메서드
	public void turnOn() {
		System.out.println("전원을 킵니다.");
	}
	
	public void turnOff() {
		
	}
}

DeskTop.java

package abstractex;

//하나의 추상메서드를 포함하면 abstract를 명시해줘야한다.(추상클래스로 선언)
public class DeskTop extends Computer{

	public void display() {
		System.out.println("DeskTop Display");
	}

	@Override
	public void typing() {
		System.out.println("DeskTop Typing");
	}
//turnOff클래스를 오버라이딩하여 재정의할 수 있음
	@Override
	public void turnOff() {
		System.out.println("desktop turnoff");
	}
	
	
}

NoteBook.java

package abstractex;

public class NoteBook extends Computer{

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

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

}

MyNoteBook.java

package abstractex;

public class MyNoteBook extends NoteBook{
	@Override
	public void display() {
		// TODO Auto-generated method stub
		
	}

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

}

ComputerTest.java

package abstractex;

public class ComputerTest {

	public static void main(String[] args) {
		
		//상위클래스Computer의 변수computer로 하위클래스에 인스턴스가 생성되서 대입될 수 있다.
		//상속에서도 그래왔듯이 상속에서도 똑같이 적용됨
		Computer computer=new DeskTop();
		computer.display();
	}
}

메서드와 클래스에 abstract 키워드 사용
추상 메서드가 포함된 클래스는 추상 클래스로 선언

모든 메서드가 구현되었다고 해도 클래스에 abstract키워드를 사용하면 추상클래스

추상클래스의 사용

추상클래스는 주로 상속의 상위클래스로 사용됨

추상메서드 : 하위 클래스가 구현해야 하는 메서드
구현된 메서드 : 하위 클래스가 공통으로 사용하는 기능의 메서드, 하위클래스에 따라 재정의 할 수 있음

좋은 웹페이지 즐겨찾기