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 |
댓글