Java 中的抽象介绍

 更新时间:2021年12月01日 11:21:16   作者:海拥  
这篇文章主要介绍了Java 中的抽象,数据抽象是一种仅向用户显示基本细节的属性。不向用户显示琐碎或非必需的单元,下面文章Java抽象详细内容,需要的朋友可以参考一下

前言:

数据抽象是一种仅向用户显示基本细节的属性。不向用户显示琐碎或非必需的单元。例如:汽车被视为汽车而不是其单个组件。

数据抽象也可以定义为仅识别对象所需特征而忽略不相关细节的过程。对象的属性和行为将其与其他类似类型的对象区分开来,也有助于对对象进行分类/分组。

考虑一个男人开车的真实例子。男人只知道踩油门会提高车速或踩刹车会停车,但他不知道踩油门车速实际上是如何增加的,他不知道汽车的内部机制汽车或在汽车中执行油门、刹车等。这就是抽象。

在java中,抽象是通过接口和抽象类来实现的。我们可以使用接口实现 100% 的抽象。

1.抽象类和抽象方法

  • 抽象类是用抽象关键字声明的类。
  • 抽象方法是声明而没有实现的方法。
  • 一个抽象类可能有也可能没有所有的抽象方法。其中一些可以是具体的方法
  • 定义为抽象的方法必须始终在子类中重新定义,从而强制覆盖或使子类本身成为抽象的。
  • 任何包含一个或多个抽象方法的类也必须用抽象关键字声明。
  • 抽象类不能有对象。也就是说,抽象类不能直接用new operator实例化。
  • 抽象类可以具有参数化构造函数,并且默认构造函数始终存在于抽象类中。

2.何时在示例中使用抽象类和抽象方法

在某些情况下,我们希望定义一个超类来声明给定抽象的结构,而无需提供每个方法的完整实现。也就是说,有时我们会想要创建一个只定义一个泛化形式的超类,该泛化形式将被其所有子类共享,而将其留给每个子类来填充细节。

考虑一个经典的“形状”示例,可能用于计算机辅助设计系统或游戏模拟。基本类型是“形状”,每个形状都有颜色、大小等。由此,衍生出(继承)特定类型的形状——圆形、方形、三角形等——每一种都可能有额外的特征和行为。例如,某些形状可以翻转。某些行为可能会有所不同,例如当您要计算形状的面积时。类型层次体现了形状之间的相似性和差异性。

abstract class Shape {
 String color;

 abstract double area();
 public abstract String toString();

 public Shape(String color){
  System.out.println("Shape constructor called");
  this.color = color;
 }
 public String getColor() { return color; }
}
class Circle extends Shape {
 double radius;

 public Circle(String color, double radius){
  super(color);
  System.out.println("Circle constructor called");
  this.radius = radius;
 }

 @Override double area(){
  return Math.PI * Math.pow(radius, 2);
 }

 @Override public String toString(){
  return "Circle color is " + super.getColor()
   + "and area is : " + area();
 }
}
class Rectangle extends Shape {

 double length;
 double width;

 public Rectangle(String color, double length,double width){
  super(color);
  System.out.println("Rectangle constructor called");
  this.length = length;
  this.width = width;
 }

 @Override double area() { return length * width; }

 @Override public String toString(){
  return "Rectangle color is " + super.getColor()
   + "and area is : " + area();
 }
}
public class Test {
 public static void main(String[] args){
  Shape s1 = new Circle("Red", 2.2);
  Shape s2 = new Rectangle("Yellow", 2, 4);
  System.out.println(s1.toString());
  System.out.println(s2.toString());
 }
}

输出:

Shape constructor called
Circle constructor called
Shape constructor called
Rectangle constructor called
Circle color is Redand area is : 15.205308443374602
Rectangle color is Yellowand area is : 8.0

3.封装与数据抽象

  • 封装是数据隐藏(信息隐藏),抽象是细节隐藏(实现隐藏)。
  • 封装将数据和作用于数据的方法组合在一起,而数据抽象则处理将接口暴露给用户并隐藏实现细节。

4.抽象的优点

  • 它降低了查看事物的复杂性。
  • 避免代码重复并提高可重用性。
  • 有助于提高应用程序或程序的安全性,因为只向用户提供重要的细节。

到此这篇关于Java 中的抽象介绍的文章就介绍到这了,更多相关Java 中的抽象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 排序算法的Java实现全攻略

    排序算法的Java实现全攻略

    这篇文章主要介绍了排序算法的Java实现,包括Collections.sort()的使用以及各种经典算法的Java代码实现方法总结,超级推荐!需要的朋友可以参考下
    2015-08-08
  • CMD运行Intellij Idea编译后的class文件操作

    CMD运行Intellij Idea编译后的class文件操作

    这篇文章主要介绍了CMD运行Intellij Idea编译后的class文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • java8 stream sort自定义复杂排序案例

    java8 stream sort自定义复杂排序案例

    这篇文章主要介绍了java8 stream sort自定义复杂排序案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Spring整合Kaptcha谷歌验证码工具的开发步骤

    Spring整合Kaptcha谷歌验证码工具的开发步骤

    这篇文章主要介绍了Spring整合Kaptcha谷歌验证码工具的开发步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • java中关于转义字符的一个bug

    java中关于转义字符的一个bug

    本文主要介绍了java中关于转义字符的一个bug。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • JAVA中调用C语言函数的实现方式

    JAVA中调用C语言函数的实现方式

    这篇文章主要介绍了JAVA中调用C语言函数的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 解析Java中的队列和用LinkedList集合模拟队列的方法

    解析Java中的队列和用LinkedList集合模拟队列的方法

    这篇文章主要介绍了解析Java中的队列和用LinkedList集合模拟队列的方法,相关算法的实现也是ACM中的常见题目,需要的朋友可以参考下
    2015-08-08
  • Spring Batch轻量级批处理框架实战

    Spring Batch轻量级批处理框架实战

    本文主要介绍了Spring Batch轻量级批处理框架实战,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Java中的MapStruct的使用方法代码实例

    Java中的MapStruct的使用方法代码实例

    这篇文章主要介绍了Java中的MapStruct的使用方法代码实例,mapstruct是一种实体类映射框架,能够通过Java注解将一个实体类的属性安全地赋值给另一个实体类,有了mapstruct,只需要定义一个映射器接口,声明需要映射的方法,需要的朋友可以参考下
    2023-10-10
  • Java NIO实现群聊系统

    Java NIO实现群聊系统

    这篇文章主要为大家详细介绍了Java NIO实现群聊系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论