재정의(확장)
해줘야 한다.접근제한자 abstract class 클래스명{
추성메서드();
}
접근제한자 abstract 반환타입 메서드명(매개변수){
내용,,,
}
추상클래스 -> 자식 클래스 확장
Animal.class (추상 클래스)
public abstract class Animal {
private String masterName;
public abstract void bark();
public void eat() {
System.out.println("먹는다.");
}
public String getMasterName() {
return "dsg";
}
}
Dog.class
public class Dog extends Animal {
@Override
// 일반 메서드여도 오버라이딩 가능, override annotation을 붙여주면 좋다. 컴파일 에러 잡아줌
public void eat() {
System.out.println("개처럼 먹는다.");
}
@Override
public void bark() {
System.out.println("멍멍");
}
}
AbstractClassTest
public class AbstractClassTest {
public static void main(String[] args) {
Animal dog = new Dog();
dog.bark();
dog.eat();
System.out.println(dog.getMasterName());
}
}
결과)
추상메서드
와 상수
로만 이루어짐다중 상속
이 가능하다. 강제구현
을 위해 쓰인다!디폴트 메서드
디폴트 메소드를 정의하고 기본 구현부를 제공하고 만약 기본 구현부가 맘에 들지 않으면 각자가 오버라이딩을 하여 재구현할 수 있도록 선택적인 메소드를 가이드한다면 시스템 운영 유지보수성이 확보가 될 것이다.
interface 인터페이스명 [extends 상속받을 인터페이스명,,,,]{
//상수
타입 상수명 = 값;
public abstract void 추상메서드명1();
// public abstract 생략 가능
void 추상메서드명2();
//디폴트 메소드
default 타입 메소드명(매개변수, ... ){
//구현부
}
//정적 메소드
static 타입 메소드명(매개변수) {
//구현부
}
}
class 클래스명 extends 상속받을클래스명 implements 인터페이스명{
내용
}
package interfaceTest;
public class mainTest {
public static void main(String[] args) {
Cat cat = new Cat();
cat.breath("hhhmmm");
cat.eat("생선");
cat.sleep("zzz");
cat.work("wkwn");
}
}
interface animals{
public void eat(String bab);
public void work(String move);
public void sleep(String zzz);
}
interface lifes { // 또다른 인터페이스
public void breath(String hum);
}
class Cat implements animals, lifes { // 다중상속
// 인터페이스에서 만든 메서드를 구현클래스가 다 구현해야함.
@Override
public void eat(String bab) {
System.out.println("고양이는 "+bab+"을 먹어요.");
}
@Override
public void work(String move) {
System.out.println("고양이는 "+move+"걸어요.");
}
@Override
public void sleep(String zzz) {
System.out.println("고양이는 "+zzz+"자요.");
}
@Override
public void breath(String hum) {
System.out.println("고양이는 "+hum+"합니다.");
}
}
결과)
고양이는 hhhmmm합니다.
고양이는 생선을 먹어요.
고양이는 zzz자요.
고양이는 wkwn걸어요.
- 추상클래스 - 변수, 상속을 통한 확장 목적이 큼
- 인터페이스 - 기능(메서드), 구현 강제, 조합, 기능 명세화 목적이 큼
https://private.tistory.com/20 [공부해서 남 주자]