본문 바로가기
Backend/JAVA

JAVA 추상 클래스

by YERIEL_염주둥 2020. 4. 27.
728x90

추상화 

공통적인것을 모아서 추상적으로 만든다.
① 추상 클래스
② 인터페이스

 

추상 클래스
 - 클래스명 앞에 abstract 키워드가 붙는다.
 - abstract 키워드가 붙은 추상 메서드를 구현 할 수 있다.
 - 추상 클래스는 일반적인 메서드 및 필드도 구현이 가능하다. - 약간 유동성이 있다(유도리 있는 친구네).
   인터페이스는 일반 메서드를 가질 수 없다.
 - 추상적인 클래스는 직접 인스턴스화를 할 수 없다.
 - 추상 메서드는 몸체가 없다. ('{ }' 구현부가 생략 되어야 한다.)
 - 추상메서드는 서브 클래스에서 필히 구현이 되어야한다.(오버라이딩)

package kr.or.ksmart;

abstract class Sample3{
	public abstract void print();
}
	
}
public class JavaBasic04 {

	public static void main(String[] args) {

		//추상 클래스는 직접 인스턴스화를 할 수 없다.
		Sample3 sample3 = new Sample3();

	}

}

추상 클래스는 인스턴스화가 불가능

 

추상클래스는 서브클래스로 상속 받아 인스턴스화가 가능하다.

package kr.or.ksmart;

abstract class Sample3{
	public abstract void print();
}

class SubSample3 extends Sample3{

	@Override
	public void print() {
		System.out.println("추상 메서드 구현");
		
	}
	
}
public class JavaBasic04 {

	public static void main(String[] args) {
		// 추상적인 클래스를 상속 받아 구현된 서브클래스
		// 추상클래스가 직접 인스턴슨화를 하는 것인 하니라 슈퍼 클래스 참조 타입으로  서브클래스가 인스턴스화 된다.
		Sample3 s = new SubSample3();
	}

}

 

 

package kr.or.ksmart;

abstract class Calculator{
	protected int n1;
	protected int n2;
	public abstract void sum(int n1, int n2);
	public final int print() {
		return n1 + n2;
	}
}

class Sum extends Calculator{
	@Override
	public void sum(int n1, int n2) {		
		super.n1 = n1;
		super.n2 = n2;
	}
	
}

public class JavaBasic05 {

	public static void main(String[] args) {
		Calculator cal = new Sum();
		cal.sum(10,20);
		System.out.println(cal.print());

	}

}

반응형

'Backend > JAVA' 카테고리의 다른 글

JAVA equals( ) 메서드  (0) 2020.04.29
JAVA - hashCode( )  (0) 2020.04.29
JAVA override && final  (0) 2020.04.27
JAVA 다형성  (0) 2020.04.22
JAVA 상속  (0) 2020.04.22

댓글