추상메서드
// 추상클래스 (불안전한 객체)
public abstract class Animal{
// 추상메서드 (불안전한 메서드)
public abstract void eat(){}
// 일반 메서드
public void movie(){}
}
추상 메서드는 객체를 만들 수 없습니다.
Animal ani = new Animal(); // 만들 수 없다
자신의 혼자서는 사용을 하지 못하며, 부모의 역할로만 사용할 수 있습니다.
public class Dog extends Animal{
public void eat(){}
}
public class Cat extends Animal{
public void eat(){}
}
추상 클래스인 부모에 추상 메서드가 있다면, 구현 클래스에는 반드시 추상 메서드를 구현해야 합니다. (재정의)
재정의를 하지 않으면 하위 클래스도 추상클래스가 되기 때문에 객체를 생성할 수 없게 됩니다.
객체를 생성할 경우에 부모 클래스를 타입으로 하면, 메서드를 호출할 때 메서드 오버 라이딩되면서 자식 클래스의 메서드가 호출이 됩니다.
Animal r = new Dog();
r.eat();
추상클래스는 추상메서드를 구현하고, 구현 메서드도 따로 구현할 수 있습니다. (일부 다형성 보장)
하지만 인터페이스는 100% 추상메서드를 구현해야 합니다. (다형성 완전 보장)
인터페이스
인터페이스는 다형성을 100% 보장합니다.
public interface RemoCon{
public abstract void chUp();
public void chDown();
public abstract void internat();
// 구현된 메서드를 가질 수 없다.
public void internet(){...};
}
추상메서드와는 달리 인터페이스는 구현된 메서드를 가질 수 없으며,자식 클래스에서 반드시 구현해주어야 합니다.
인터페이스를 사용하게 되면 메서드는 모두 추상메서드가 되며, abstract를 생략할 수 있습니다.
public abstract void chUp();
public abstract void chDown();
public abstract void internat();
| |
| |
\ /
\ /
public void chUp();
public void chDown();
public void internet();
상속은 implements를 사용하여 상속을 받고 인터페이스를 상속받은 클래스는 반드시 인터페이스안에 있는 모든 추상 메서드를 구현해야 합니다.
public class TV implements RemoCon{
public void chUp(){...};
public void chDown(){...};
public void internet(){...};
}
또한, 인터페이스에서는 상수가 사용가능합니다.
public interface RemoCon{
public static final int MAX = 100; // RemoCon.MAX
public static final int MIN = 1; // RemoCon.MIN
| |
| |
\ /
\ /
int MAX = 100;
int MIN =1 ;
public abstract void chUp();
public void chDown();
public abstract void internat();
}
int MAX = 100; 이런식으로 사용이 가능하지만 public static final int MAX = 100; 이라는 뜻이며 static final은 생략 가능합니다.
RemoCon.MAX = 100; 이런식으로 사용 가능합니다.
'JAVA' 카테고리의 다른 글
[JAVA] ArrayList (0) | 2022.12.04 |
---|---|
[JAVA] 메서드 오버로딩(Method Overloading) 과 오버라이딩(Method Overriding) (0) | 2021.12.20 |
[JAVA] 메서드가 메모리에 저장되는 과정 (0) | 2021.12.18 |
[JAVA] 변수선언과 할당 (0) | 2021.12.16 |
[JAVA] 자바 구동방식 (0) | 2021.12.16 |