教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

接口和抽象类有什么区别?

更新时间:2023年03月27日10时29分 来源:传智教育 浏览次数:

好口碑IT培训

  接口和抽象类是面向对象编程中的两种重要的概念,它们都可以用来实现多态性,但是它们有一些不同之处。

  接口是一种定义了一组方法的抽象类型,但是没有提供任何具体的实现。在接口中,所有的方法都是抽象方法,没有方法体,只有方法名和参数列表。接口可以被实现(implement)到类中,从而强制实现类中的所有方法。一个类可以实现多个接口。下面是一个接口的例子:

public interface Shape {
    double area();
    double perimeter();
}

  抽象类是一个不能被实例化的类,它的目的是被其他类继承。抽象类中可以包含实现的方法,也可以包含抽象的方法,即没有实现的方法。如果一个类继承了一个抽象类,那么它必须要实现抽象类中的所有抽象方法。下面是一个抽象类的例子:

public abstract class Animal {
    private String name;

    public Animal(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public abstract String makeSound();
}

  区别:

  1.接口只能定义方法,而抽象类可以定义方法和属性。

  2.接口中的方法都是抽象方法,即没有方法体,而抽象类中可以有具体的实现方法和抽象方法。

  3.一个类可以实现多个接口,但只能继承一个抽象类。

  4.接口中的方法默认都是public的,而抽象类中的方法可以有不同的访问修饰符。

  下面是一个例子,展示了如何定义和使用接口和抽象类:

interface Vehicle {
    void start();
    void stop();
}

abstract class Car implements Vehicle {
    private String name;

    public Car(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void start() {
        System.out.println("The car has started.");
    }

    public abstract void drive();
}

class Toyota extends Car {
    public Toyota(String name) {
        super(name);
    }

    public void drive() {
        System.out.println("The Toyota is driving.");
    }

    public void stop() {
        System.out.println("The Toyota has stopped.");
    }
}

  在上面的例子中,Vehicle是一个接口,Car是一个抽象类,Toyota是一个继承自Car并实现了Vehicle接口的具体类。Toyota类必须实现Car类中的抽象方法drive(),同时也要实现Vehicle接口中的所有方法。

0 分享到:
和我们在线交谈!