extends vs implements

Abstract Class, Abstract Method

부모 클래스
abstract class Vehicle {
    public Vehicle() {}
    
    void board() {
        System.out.println("탑승하다.");
    }
    
    abstract void move();
    abstract void pay();
}
자식 클래스 1
public class Taxi extends Vehicle {
    public Taxi() {}
    
    @Override
    void move() {
        System.out.println("이동 중입니다. 안전벨트 매주세요.");
    }
    
    @Override
    void pay() {
        System.out.println("택시 요금 지불해주세요.");
    }
}
자식 클래스 2
public class Bus extends Vehicle {
    public Bus() {}
    
    @Override
    void move() {
        System.out.println("이동 중입니다. 자리에 앉거나 손잡이를 잡아주세요.");
    }
    
    @Override
    void pay() {
        System.out.println("삐빅 하차입니다.");
    }
}
실행 클래스
public class AbstracTest {
    public static void main(String[] args) {
        Vehicle t = new Taxi();
        Vehicle b = new Bus();
        
        t.board();
        t.move();
        t.pay();
        
        b.board();
        b.move();
        b.pay();
    }
}

// 탑승하다.
// 이동 중입니다. 안전벨트 매주세요.
// 택시 요금 지불해주세요.
// 탑승하다. 
// 이동 중입니다. 자리에 앉거나 손잡이를 잡아주세요.
// 삐빅 하차입니다.

extends vs implements

extends
class Vehicle {
  protected int speed = 3;
  
  public int getSpeed(){
    return speed;
  }
  public void setSpeed(int speed){
    this.speed = speed;
  }
}

class Car extends Vehicle{
  public void printspd(){
    System.out.println(speed);
  }
}

public class ExtendsSample {
  public static main (String[] args){
    Car A = new Car();
    System.out.println(A.getSpeed());
    A.printspd();
  }
}
implements
interface TestInterface{
  public static int num = 8;
  public void fun1();
  public void fun2();
}

class InterfaceExam implements TestInterface{
  @Override
  public void fun1(){
    System.out.println(num);
  }
  
  @Override
  public void fun2() {
    
  }
}

public class InterfaceSample{
  public static void main(String args[]){
    InterfaceExam exam = new InterfaceExam();
    exam.fun1();
  }
}

Last updated