关于人工智能:23-接口与抽象类

38次阅读

共计 2211 个字符,预计需要花费 6 分钟才能阅读完成。

接口和抽象类是 Java 中两种实现形象和多态的办法。它们之间有一些区别,但也有一些相似之处。这一节咱们将通过具体的例子来更深刻地理解接口和抽象类。

2.3.1. 接口

接口能够定义一组办法签名,但不能蕴含办法的实现。一个类能够实现多个接口,实现接口的类必须实现接口中定义的所有办法。

定义接口:

interface InterfaceName {ReturnType methodName(Parameters);
}

实现接口:

class ClassName implements InterfaceName {// 实现接口中的所有办法}

示例 1:接口

interface Drawable {void draw();
}

class Circle implements Drawable {
    double radius;

    @Override
    public void draw() {System.out.println("Drawing a circle with radius" + radius);
    }
}

class Square implements Drawable {
    double sideLength;

    @Override
    public void draw() {System.out.println("Drawing a square with side length" + sideLength);
    }
}

class Main {public static void main(String[] args) {Circle circle = new Circle();
        circle.radius = 5;
        circle.draw(); // 实现接口的办法

        Square square = new Square();
        square.sideLength = 4;
        square.draw(); // 实现接口的办法}
}

接口还能够具备默认办法和静态方法,这些办法能够蕴含实现。

interface InterfaceName {default ReturnType defaultMethodName(Parameters) {// 默认办法的实现}

    static ReturnType staticMethodName(Parameters) {// 静态方法的实现}
}

2.3.2. 抽象类

抽象类能够蕴含形象办法(没有实现的办法)和具体方法。子类必须实现抽象类中的所有形象办法。一个类只能继承一个抽象类。

定义抽象类:

abstract class AbstractClassName {abstract ReturnType methodName(Parameters);

    ReturnType methodName(Parameters) {// 具体方法的实现}
}

继承抽象类:

class ClassName extends AbstractClassName {// 实现抽象类中的所有形象办法}

示例 2:抽象类

abstract class Shape {abstract double getArea();

    void printArea() {System.out.println("The area is" + getArea());
    }
}

class Circle extends Shape {
    double radius;

    @Override
    double getArea() {return Math.PI * radius * radius;}
}

class Square extends Shape {
    double sideLength;

    @Override
    double getArea() {return sideLength * sideLength;}
}

class Main {public static void main(String[] args) {Circle circle = new Circle();
        circle.radius = 5;
        circle.printArea(); // 继承自抽象类的具体方法

        Square square = new Square();
        square.sideLength = 4;
        square.printArea(); // 继承自抽象类的具体方法}
}

2.3.3. 接口与抽象类的区别

  1. 一个类能够实现多个接口,但只能继承一个抽象类。
  2. 接口中的办法默认是 public,不能有其余拜访修饰符。抽象类中的办法能够有不同的拜访修饰符。
  3. 接口不能蕴含实例变量(成员变量),只能申明动态常量。抽象类能够蕴含实例变量。
  4. 接口反对默认办法和静态方法,抽象类不反对默认办法。

2.3.4. 何时应用接口和抽象类?

  • 当你想要定义一组相干对象应该实现的办法,但不关怀具体的实现时,应用接口。
  • 当你想要为一组相干对象提供共享的实现和行为时,应用抽象类。
  • 如果须要实现多个不同的行为组合,应用接口。因为 Java 不反对多继承,所以不能继承多个抽象类,但能够实现多个接口。

2.3.5. 小结

通过本节的学习,咱们理解了接口和抽象类的概念以及它们之间的区别。接口和抽象类都能够实现形象和多态,抉择应用哪个取决于具体的需要和设计。

咱们学习了如何定义接口和抽象类,如何应用它们来实现多态,并通过具体的例子加深了对这两个概念的了解。

在理论开发中,依据具体的利用场景和需要,正当地应用接口和抽象类,能够帮忙咱们设计出更加灵便、可扩大和易于保护的代码。

举荐浏览:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

正文完
 0