• 关于Java抽象类和接口的总结和一点个人的看法


    ꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
    ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ ა
    本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶
    个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
    系列专栏:xiaoxie的Java系列专栏——CSDN博客●'ᴗ'σσணღ*
    我的目标:"团团等我💪( ◡̀_◡́ ҂)" 

    感谢您的阅读!

    ( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​+关注(互三必回)!

    一.抽象类

    1.抽象类的定义

    Java中的抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类用于定义一些通用的属性和方法,但是这些方法并没有具体的实现,需要子类去实现。抽象类的定义使用关键字abstract来修饰,可以包含抽象方法和非抽象方法。

    2.抽象类的语法

    1. public abstract class Animal {
    2. //和普通的类一样可以创建成员变量,静态成员变量
    3. public String name;
    4. private int age;
    5. protected String sex;
    6. public static int a;
    7. //和普通的类一样可以创建成员方法,静态成员方法
    8. public void func1() {
    9. }
    10. public static void func2() {
    11. }
    12. //和普通类不一样的是抽象类还可以创建抽象方法
    13. //抽象方法要在方法的前面加上关键字abstract 并且没有具体的实现
    14. public abstract void func3();
    15. }
    • 使用关键字abstract来修饰类,表示这是一个抽象类。
    • 抽象类可以包含成员变量、构造方法、抽象方法和非抽象方法。
    • 抽象方法的声明以及没有方法体。
    • 非抽象方法有具体的实现,可以直接调用。
    • 抽象类不能被实例化,只能被继承。

    3.抽象类的注意事项

    1.抽象类不能被实例化:抽象类不能被直接实例化,因为它包含未实现的抽象方法。只能被用作其他类的父类,子类必须实现抽象方法才能被实例化。

    2.子类必须实现抽象方法:如果一个类继承了一个抽象类,它必须实现抽象类中所有的抽象方法,除非子类也声明自己为抽象类。

    3.抽象类可以包含非抽象方法:抽象类中可以包含非抽象方法,这些方法有具体的实现。子类可以直接继承这些非抽象方法,也可以选择性地重写它们。

    4.抽象类可以包含成员变量和构造方法:与普通类一样,抽象类可以包含成员变量和构造方法。子类可以通过super关键字调用父类的构造方法。

    5.抽象类可以被继承:一个抽象类可以被另一个抽象类继承,子类可以继续定义更多的抽象方法,或者实现所有的抽象方法。

    4.对抽象类的看法

    抽象类是一种不能被实例化的类,它主要用于定义一些共性的属性和方法,以供其子类继承和实现。抽象类本身并不具备完整的实现,而是通过其子类来完善其方法和属性。因此,抽象类可以被看作是一种模板或者规范,用来约束其子类的行为和结构。

    抽象类的存在可以帮助程序员更好地进行代码的组织和设计,通过抽象类可以定义出一些通用的行为和属性,减少了代码的重复性,提高了代码的可维护性和扩展性。同时,抽象类也能够在一定程度上约束了子类的行为,使得程序更加健壮和可靠。

    总的来说,抽象类是面向对象编程中非常重要的概念,它能够帮助程序员更好地进行代码的组织和设计,提高代码的复用性和可维护性。因此,对于抽象类的使用,程序员需要深入理解其特性和用法,合理地应用到实际的程序设计中。

    二.接口

    1.接口的定义

    接口是指软件系统中不同组件之间互相传递信息的规范和协定。在面向对象编程中,接口用来定义一个类的行为,是类的一种规范化或规范模式。接口中定义了一些方法,但是并不实现,而是由实现该接口的类去实现。

    在具体应用中,接口可以描述两个不同的组件之间的交互方式,包括数据格式、协议、参数、返回值等方面的规范。接口可以帮助不同的系统或组件进行互操作,提高软件的可维护性、可扩展性和灵活性。同时,接口的定义还可以帮助开发人员进行模块化的设计和开发,提高代码的复用和可读性。

    2.接口的语法

    1. public interface IFly {
    2. //接口也可以创建成员变量
    3. //不过成员变量 默认的形式为 public static final
    4. //并且需要初始化 因为接口不能实例化对像
    5. String name = " ";
    6. //接口可以创建成员方法
    7. //成员方法被 public abstract 修饰 也可以不写,并且没有方法实现
    8. //实现这个接口的类需要重写接口的这个方法
    9. public void work();
    10. //要写具体的方法实现 需要被 public static 所修饰
    11. public static void work1() {
    12. }
    13. }

    其中,InterfaceName是所定义的接口的名称,// 接口成员指的是在接口中定义的方法和属性。在接口中定义的方法和属性不包含函数体和实现细节,只是提供了一个对实现类的约束,即定义了实现类必须实现哪些方法和属性。

    3.接口的注意事项

    1. 确保接口的命名具有描述性,能够清晰地表达其功能和用途。
    2. 接口的方法和属性应该按照功能进行分组和命名,以便于理解和使用。
    3. 接口的设计应该尽量简洁和易于理解,避免过度复杂或冗余的设计。
    4. 在设计接口时,需要考虑到未来可能的扩展和变化,以便接口能够灵活地适应需求的变化。
    5. 接口的文档应该清晰地描述每个方法和属性的作用和用法,以便其他开发人员能够正确地使用接口。
    6. 在实现接口时,需要确保按照接口定义的要求进行实现,以确保接口的一致性和可靠性。
    7. 接口的版本管理也是一个重要的考虑因素,需要确保接口的变化不会对已有的实现造成影响。
    8. 在使用接口时,需要遵循接口的规范和约定,以确保接口的正确使用和调用。

    4.父类和接口的区别

    1.在Java中子类只能继承一个父类,子类却可以实现多个接口

    2.抽象类的成员属性和方法和普通类一样 可以创建成员变量和成员方法,而接口的成员属性是被 public stasic final 和 public abstract 所修饰的

    5.对接口的看法

    接口是一种非常重要的编程概念,它可以帮助开发人员实现代码的模块化和复用,提高代码的可维护性和可扩展性。

    接口提供了一种规范化的方式来定义类之间的交互和通信方式,使得不同的类可以通过实现同一个接口来实现相同的功能。这种方式可以大大减少代码的重复和冗余,同时也可以提高代码的可读性和可理解性。

    另外,接口还可以帮助开发人员实现代码的解耦和模块化,使得不同的模块之间可以独立开发和测试,从而提高代码的质量和可靠性。同时,接口的使用也可以促进团队合作和代码复用,使得开发效率得到提高。

    总之,作为一种重要的编程概念,接口在软件开发中具有非常重要的作用,它可以帮助开发人员实现代码的复用和模块化,提高代码的可维护性和可扩展性,促进团队合作和开发效率的提高。

    三.接口和抽象类的结合运用

    接口和抽象类都是面向对象编程中的重要概念,它们可以用于实现多态和封装。在某些情况下,将接口和抽象类结合起来使用可以达到更好的效果。

    接口和抽象类的区别在于,接口只能定义方法和常量,而抽象类可以定义具体方法和成员变量。因此,可以使用抽象类来实现接口中的某些方法,然后在子类中重写剩余方法。

    例如,假设我们有一个图形接口 Shape,其中定义了一个计算面积的方法 getArea()。我们可以将该接口改为抽象类,并提供一个具体方法 getPerimeter() 来计算周长。这样,子类就可以继承抽象类并只需要实现计算面积的方法。

    示例代码如下:

    1. public abstract class Shape {
    2. public double getPerimeter() {
    3. return 0;
    4. }
    5. public abstract double getArea();
    6. }
    7. public class Circle extends Shape {
    8. private double radius;
    9. public Circle(double radius) {
    10. this.radius = radius;
    11. }
    12. @Override
    13. public double getArea() {
    14. return Math.PI * radius * radius;
    15. }
    16. @Override
    17. public double getPerimeter() {
    18. return 2 * Math.PI * radius;
    19. }
    20. }
    21. public class Rectangle extends Shape {
    22. private double length;
    23. private double width;
    24. public Rectangle(double length, double width) {
    25. this.length = length;
    26. this.width = width;
    27. }
    28. @Override
    29. public double getArea() {
    30. return length * width;
    31. }
    32. @Override
    33. public double getPerimeter() {
    34. return 2 * (length + width);
    35. }
    36. }

    在上面的示例中,我们将 Shape 接口改为抽象类,并添加了一个具体方法 getPerimeter()。子类 Circle 和 Rectangle 继承自 Shape,并实现了 getArea() 方法和重写了 getPerimeter() 方法。

    通过这种方式,我们可以在抽象类中实现一些通用的方法,同时还能保留接口的灵活性。这种结合运用可以使代码更加简洁和易于扩展。

     

  • 相关阅读:
    编译安装LAMP架构搭建wordpress个人博客和discuz论坛——编译安装基于 FASTCGI 模式LAMP架构多虚拟主机WEB应用
    Android12之#pragma clang diagnostic ignored总结(一百六十八)
    日本MF备案注册数据库-在线免费查询
    [论文笔记] Balboa: Bobbing and Weaving around Network Censorship
    C#单向链表实现非升序插入方法:用LinkedList<int>链表类 vs 自定义单向链表类及非升序插入方法
    Java StringBuffer.setCharAt具有什么功能呢?
    uniapp 配置并使用 VueX
    Util应用框架 UI 开发快速入门
    海藻酸-磷脂微囊复合水凝胶/具有细胞膜仿生温敏性水凝胶的相关内容
    Windows资源管理器已停止工作的解决方法
  • 原文地址:https://blog.csdn.net/xiaoxie8023/article/details/134417887