Java抽象类与接口

142 阅读1分钟

抽象类与接口既有相同点也有不同点。

相同点是,他们都可以作为一种强制性约束,以约束子类必须实现某些方法。基于这一点,抽象类与接口都不能被实例化。

image.png

抽象类

abstruct 关键词

抽象类可以包含非抽象方法,这些非抽象方法是可以被子类直接继承复用的。

java类是单继承,所以抽象类也只能是单继承。

public abstruct class Person
{
   //非抽象方法,可被子类直接复用
   public void say()
   {
       //...
   }
   
   //抽象方法,没有方法体,子类必须实现这个方法
   public abstruct void eat();
}

//继承抽象类
public class Manager extends Person
{
    //必须实现eat方法
    public void eat()
    {
        //...
    }
}

接口

interface 关键词

接口是隐式抽象的,不需要显示声明abstruct关键词

接口可以被多重继承

public interface Animal
{
    //隐式抽象
    public void run()
}

public interface Man
{
    //隐式抽象
    public void think()
}

public class Manager extends Person implements Animal,Man
{
    //必须实现抽象类Person的eat方法
    public void eat()
    {
        //...
    }
    
    //必须实现接口Animal的run方法
    public void run()
    {
        //...
    }
    
    //必须实现接口Man的think方法
    public void think()
    {
        //...
    }
}