ToB企服应用市场:ToB评测及商务社交产业平台

标题: 2.3. 接口与抽象类 [打印本页]

作者: 我爱普洱茶    时间: 2023-6-7 12:46
标题: 2.3. 接口与抽象类
接口和抽象类是 Java 中两种实现抽象和多态的方法。它们之间有一些区别,但也有一些相似之处。这一节我们将通过详细的例子来更深入地了解接口和抽象类。
2.3.1. 接口

接口可以定义一组方法签名,但不能包含方法的实现。一个类可以实现多个接口,实现接口的类必须实现接口中定义的所有方法。
定义接口:
  1. interface InterfaceName {
  2.     ReturnType methodName(Parameters);
  3. }
复制代码
实现接口:
  1. class ClassName implements InterfaceName {
  2.     // 实现接口中的所有方法
  3. }
复制代码
示例1:接口
  1. interface Drawable {
  2.     void draw();
  3. }
  4. class Circle implements Drawable {
  5.     double radius;
  6.     @Override
  7.     public void draw() {
  8.         System.out.println("Drawing a circle with radius " + radius);
  9.     }
  10. }
  11. class Square implements Drawable {
  12.     double sideLength;
  13.     @Override
  14.     public void draw() {
  15.         System.out.println("Drawing a square with side length " + sideLength);
  16.     }
  17. }
  18. class Main {
  19.     public static void main(String[] args) {
  20.         Circle circle = new Circle();
  21.         circle.radius = 5;
  22.         circle.draw(); // 实现接口的方法
  23.         Square square = new Square();
  24.         square.sideLength = 4;
  25.         square.draw(); // 实现接口的方法
  26.     }
  27. }
复制代码
接口还可以具有默认方法和静态方法,这些方法可以包含实现。
  1. interface InterfaceName {
  2.     default ReturnType defaultMethodName(Parameters) {
  3.         // 默认方法的实现
  4.     }
  5.     static ReturnType staticMethodName(Parameters) {
  6.         // 静态方法的实现
  7.     }
  8. }
复制代码
2.3.2. 抽象类

抽象类可以包含抽象方法(没有实现的方法)和具体方法。子类必须实现抽象类中的所有抽象方法。一个类只能继承一个抽象类。
定义抽象类:
  1. abstract class AbstractClassName {
  2.     abstract ReturnType methodName(Parameters);
  3.     ReturnType methodName(Parameters) {
  4.         // 具体方法的实现
  5.     }
  6. }
复制代码
继承抽象类:
  1. class ClassName extends AbstractClassName {
  2.     // 实现抽象类中的所有抽象方法
  3. }
复制代码
示例2:抽象类
  1. abstract class Shape {
  2.     abstract double getArea();
  3.     void printArea() {
  4.         System.out.println("The area is " + getArea());
  5.     }
  6. }
  7. class Circle extends Shape {
  8.     double radius;
  9.     @Override
  10.     double getArea() {
  11.         return Math.PI * radius * radius;
  12.     }
  13. }
  14. class Square extends Shape {
  15.     double sideLength;
  16.     @Override
  17.     double getArea() {
  18.         return sideLength * sideLength;
  19.     }
  20. }
  21. class Main {
  22.     public static void main(String[] args) {
  23.         Circle circle = new Circle();
  24.         circle.radius = 5;
  25.         circle.printArea(); // 继承自抽象类的具体方法
  26.         Square square = new Square();
  27.         square.sideLength = 4;
  28.         square.printArea(); // 继承自抽象类的具体方法
  29.     }
  30. }
复制代码
2.3.3. 接口与抽象类的区别

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

2.3.5. 小结

通过本节的学习,我们了解了接口和抽象类的概念以及它们之间的区别。接口和抽象类都可以实现抽象和多态,选择使用哪个取决于具体的需求和设计。
我们学习了如何定义接口和抽象类,如何使用它们来实现多态,并通过具体的例子加深了对这两个概念的理解。
在实际开发中,根据具体的应用场景和需求,合理地使用接口和抽象类,可以帮助我们设计出更加灵活、可扩展和易于维护的代码。


推荐阅读:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4