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

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱

ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ ა

本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶
个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ---CSDN博客

系列专栏:xiaoxie的Java系列专栏------CSDN博客●'ᴗ'σσணღ*

我的目标:"团团等我💪( ◡̀_◡́ ҂)"

感谢您的阅读!

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

一.抽象类

1.抽象类的定义

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

2.抽象类的语法

public abstract class Animal {
    //和普通的类一样可以创建成员变量,静态成员变量
    public String name;
    private int age;
    protected String sex;
    public static int a;
    //和普通的类一样可以创建成员方法,静态成员方法
    public void func1() {
        
    }
    public static void func2() {
        
    } 
    //和普通类不一样的是抽象类还可以创建抽象方法
    //抽象方法要在方法的前面加上关键字abstract 并且没有具体的实现
    public abstract void func3();

}
  • 使用关键字abstract来修饰类,表示这是一个抽象类。
  • 抽象类可以包含成员变量、构造方法、抽象方法和非抽象方法。
  • 抽象方法的声明以及没有方法体。
  • 非抽象方法有具体的实现,可以直接调用。
  • 抽象类不能被实例化,只能被继承。

3.抽象类的注意事项

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

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

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

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

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

4.对抽象类的看法

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

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

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

二.接口

1.接口的定义

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

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

2.接口的语法

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

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

3.接口的注意事项

  1. 确保接口的命名具有描述性,能够清晰地表达其功能和用途。

  2. 接口的方法和属性应该按照功能进行分组和命名,以便于理解和使用。

  3. 接口的设计应该尽量简洁和易于理解,避免过度复杂或冗余的设计。

  4. 在设计接口时,需要考虑到未来可能的扩展和变化,以便接口能够灵活地适应需求的变化。

  5. 接口的文档应该清晰地描述每个方法和属性的作用和用法,以便其他开发人员能够正确地使用接口。

  6. 在实现接口时,需要确保按照接口定义的要求进行实现,以确保接口的一致性和可靠性。

  7. 接口的版本管理也是一个重要的考虑因素,需要确保接口的变化不会对已有的实现造成影响。

  8. 在使用接口时,需要遵循接口的规范和约定,以确保接口的正确使用和调用。

4.父类和接口的区别

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

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

5.对接口的看法

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

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

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

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

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

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

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

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

示例代码如下:

public abstract class Shape {
  public double getPerimeter() {
    return 0;
  }
  
  public abstract double getArea();
}

public class Circle extends Shape {
  private double radius;
  
  public Circle(double radius) {
    this.radius = radius;
  }
  
  @Override
  public double getArea() {
    return Math.PI * radius * radius;
  }
  
  @Override
  public double getPerimeter() {
    return 2 * Math.PI * radius;
  }
}

public class Rectangle extends Shape {
  private double length;
  private double width;
  
  public Rectangle(double length, double width) {
    this.length = length;
    this.width = width;
  }
  
  @Override
  public double getArea() {
    return length * width;
  }
  
  @Override
  public double getPerimeter() {
    return 2 * (length + width);
  }
}

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

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

相关推荐
2401_8532757320 分钟前
ArrayList 源码分析
java·开发语言
zyx没烦恼21 分钟前
【STL】set,multiset,map,multimap的介绍以及使用
开发语言·c++
lb363636363621 分钟前
整数储存形式(c基础)
c语言·开发语言
feifeikon23 分钟前
Python Day5 进阶语法(列表表达式/三元/断言/with-as/异常捕获/字符串方法/lambda函数
开发语言·python
爪哇学长25 分钟前
SQL 注入详解:原理、危害与防范措施
xml·java·数据库·sql·oracle
大鲤余30 分钟前
Rust,删除cargo安装的可执行文件
开发语言·后端·rust
浪里个浪的102432 分钟前
【C语言】从3x5矩阵计算前三行平均值并扩展到4x5矩阵
c语言·开发语言·矩阵
MoFe139 分钟前
【.net core】【sqlsugar】字符串拼接+内容去重
java·开发语言·.netcore
_江南一点雨1 小时前
SpringBoot 3.3.5 试用CRaC,启动速度提升3到10倍
java·spring boot·后端
Envyᥫᩣ1 小时前
深入浅出C#编程语言
开发语言·c#