인터페이스와 추상클래스에 관해 간단히 설명하고 넘어가겠다.
interface : 상수와 추상메소드로 구성된다.
추상클래스 : 속성, 상수, 일반메소드, 추상메소드를 포함할 수 있고, 객체화가 불가능하다.
interface 구현방법
접근지정자 interface 인터페이스명 {
상수;
추상메소드;
}
ex)
예를들어 도형이라느 인터페이스는 구현한다고 하면,
public interface 도형{
static final double PI=3.14
double getSize();
String getName();
}
PI라는 변하지 않는 static final 형태의 상수를 정의하고,
넓이는 구하는 getSize(),getName() 라는 추상메소드를 정의한다.
abstract public double getSize();
라고 정의해도된다.
추상클래스
abstract 접근지정자 class 클래스 extends 부모 implements 인터페이스명{
속성;
상수;
일반메소드;
추상메소드;
}
추상클래스를 구현할 때에는 반드시 접근지정자를 public 으로 해줘야한다.
왜냐하면 하위클래스에서 Override를 통해 구현해야하기 때문이다.
도형을 implement 하는 추상클래스를 만들어보자.
ex)
abstract public class abstract도형 implements 도형{
//속성정의
System.out.println("넓이 : "+getSize());
System.out.println("이름 : "+getName());
}
도형을 상속받고, 밑변과 높이라는 속성을 정의하였다.
그리고 상태를 받아오는 PrintState() 메소드를 정의하였다.
PrintState()에서 getSize()와 getName() 을 사용할 수 있는 이유는
implements 해줬기 때문이다.
abstract도형을 상속함으로써 추상클래스내의 속성들을 사용할 수 있고, 인터페이스를 메소드 들을 Override해서 구현하여 메소드를 완성할 수 있다.
삼각형이라는 클래스를 만들었다고 가정하였을 때
abstract도형을 상속받음으로서 도형의 모든 특징들을 가질 수 있다.
추상메소드로 정의된 메소드들을 삼각형이라는 클래스에서 구체화를 해주게 되면 클래스는 완성이 된다.
ex)
class 삼각형 extends abstract도형{
@Override
double getSize(){
return baseLine*height/2;
}
@Override
String getName(){
return "삼각형";
}
}
위와 같이 인터페이스의 추상메소드를 오버라이딩하여 구체화 하게되면 사용자가 사용할 수 있는 클래스가 된다. 이를 객체화하여 사용할 수 있게 된다.
interface : 상수와 추상메소드로 구성된다.
추상클래스 : 속성, 상수, 일반메소드, 추상메소드를 포함할 수 있고, 객체화가 불가능하다.
interface 구현방법
접근지정자 interface 인터페이스명 {
상수;
추상메소드;
}
ex)
예를들어 도형이라느 인터페이스는 구현한다고 하면,
public interface 도형{
static final double PI=3.14
double getSize();
String getName();
}
PI라는 변하지 않는 static final 형태의 상수를 정의하고,
넓이는 구하는 getSize(),getName() 라는 추상메소드를 정의한다.
abstract public double getSize();
라고 정의해도된다.
추상클래스
abstract 접근지정자 class 클래스 extends 부모 implements 인터페이스명{
속성;
상수;
일반메소드;
추상메소드;
}
추상클래스를 구현할 때에는 반드시 접근지정자를 public 으로 해줘야한다.
왜냐하면 하위클래스에서 Override를 통해 구현해야하기 때문이다.
도형을 implement 하는 추상클래스를 만들어보자.
ex)
abstract public class abstract도형 implements 도형{
//속성정의
double baseLine;
double height;
abstract public String PrintState(){
abstract public String PrintState(){
System.out.println("넓이 : "+getSize());
System.out.println("이름 : "+getName());
}
도형을 상속받고, 밑변과 높이라는 속성을 정의하였다.
그리고 상태를 받아오는 PrintState() 메소드를 정의하였다.
PrintState()에서 getSize()와 getName() 을 사용할 수 있는 이유는
implements 해줬기 때문이다.
abstract도형을 상속함으로써 추상클래스내의 속성들을 사용할 수 있고, 인터페이스를 메소드 들을 Override해서 구현하여 메소드를 완성할 수 있다.
삼각형이라는 클래스를 만들었다고 가정하였을 때
abstract도형을 상속받음으로서 도형의 모든 특징들을 가질 수 있다.
추상메소드로 정의된 메소드들을 삼각형이라는 클래스에서 구체화를 해주게 되면 클래스는 완성이 된다.
ex)
class 삼각형 extends abstract도형{
@Override
double getSize(){
return baseLine*height/2;
}
@Override
String getName(){
return "삼각형";
}
}
위와 같이 인터페이스의 추상메소드를 오버라이딩하여 구체화 하게되면 사용자가 사용할 수 있는 클래스가 된다. 이를 객체화하여 사용할 수 있게 된다.