首页 > 编程语言 >JAVA语言基础内容2

JAVA语言基础内容2

时间:2023-12-29 19:45:16浏览次数:38  
标签:JAVA 语言 构造方法 子类 多态 接口 内容 抽象类 方法

一.类的封装

封装是面向对象编程中的一种重要概念,它指的是将类的内部数据和实现细节隐藏起来,只暴露必要的接口供外部使用。封装通过限制对类的直接访问,提高了代码的安全性和可维护性,并使得类的实现细节可以更灵活地变化而不影响外部代码。

封装的关键点包括:

  1. 访问控制: 封装通过访问控制机制,如私有(private)、受保护(protected)和公有(public)等修饰符,来限制类的成员(属性和方法)的访问范围。

    • 私有: 只能在类的内部访问,外部无法直接访问。
    • 受保护: 可在类的内部和子类中访问,但在外部不可直接访问。
    • 公有: 可以在类的内部和外部任何地方访问。
  2. 数据隐藏: 封装还包括对类的内部数据的隐藏,防止外部直接访问和修改类的属性。这通常通过将属性定义为私有,然后提供公有的方法(称为 getter 和 setter)来访问和修改这些属性。

     

  3. 信息隐藏: 封装还包括将类的实现细节隐藏起来,只向外部提供简洁的接口。这使得类的内部实现可以自由改变,而不会对使用类的外部代码产生影响。

     

     

通过封装,类的实现细节被封闭在类的内部,使得外部代码只需关注类的公共接口,而不需要了解其具体实现细节。这提高了代码的可维护性,降低了代码的耦合性,使得代码更易于理解和修改。

 

2.this关键字

  1. 引用当前对象: this 关键字用于在类的方法中引用当前对象的实例。通过 this,可以访问该对象的属性和调用其方法。这是为了解决可能存在的局部变量与实例变量同名的问题,以便明确指示使用的是对象的属性而不是局部变量。

  2. 在构造函数中初始化对象: 在构造函数中,this 可以用来调用当前类的其他构造函数,以便在初始化对象时复用代码。这种用法通常称为构造函数的重载。

  3. 传递当前对象: 在某些情况下,this 可以作为参数传递给其他方法,从而将当前对象传递给其他部分的代码。

总体而言,this 关键字的主要作用是在类的方法中引用当前对象的实例,以便进行操作和与其他部分的代码进行交互。不同的编程语言可能有一些细微的差异在使用 this 关键字时,但这是其基本的通用作用。

3.构造方法

构造方法是面向对象编程中的一种特殊类型的方法,用于创建和初始化对象的实例。构造方法通常与类的定义关联,负责在对象创建时执行必要的初始化操作。以下是关于构造方法的一些要点:

  1. 方法名称与类名相同: 构造方法的名称必须与类的名称相同。这是构造方法与普通方法的一个区别。

     

  2. 没有返回类型: 构造方法没有返回类型,甚至没有 void 关键字。这是因为构造方法的目的是创建对象,而不是返回值。

     

  3. 可以重载: 与普通方法一样,构造方法可以进行重载,即在同一个类中可以定义多个构造方法,它们有不同的参数列表。这允许在创建对象时提供不同的初始化选项。

     

  4. 用于初始化对象: 构造方法主要用于初始化对象的状态,设置对象的属性或执行其他必要的初始化操作。在对象创建时,构造方法会被自动调用。

     

  5. 默认构造方法: 如果在类中没有定义任何构造方法,编译器会自动生成一个默认的无参数构造方法。但是,一旦你在类中定义了构造方法,编译器就不再提供默认构造方法。

     

构造方法在对象创建时执行,为对象的属性赋初值,确保对象在被使用之前处于一个合适的状态。通过使用构造方法,可以提供多种初始化选项,增加类的灵活性和可重用性。

二,类的继承

类的继承是面向对象编程中一种重要的机制,允许一个类(子类/派生类)继承另一个类(父类/基类)的属性和行为。这使得可以通过构建和扩展现有类来创建新的类,提高代码的重用性和灵活性。以下是关于类继承的一些要点:

  1. 基本语法: 在许多面向对象的编程语言中,继承的语法通常如下:

     

    这表示 SubclassParentClass 的子类,Subclass 将继承 ParentClass 的属性和方法。

  2. 子类与父类关系: 子类继承了父类的属性和方法,这意味着子类可以访问并使用父类的成员。子类可以添加新的成员或重写继承的方法,也可以定义自己的方法。

  3. 访问修饰符: 成员(字段和方法)在父类中可以有不同的访问修饰符,如 publicprotectedprivate 或默认(package-private)。子类继承这些成员时,访问权限受到限制。通常,子类可以访问父类中的 publicprotected 成员,而不能直接访问 private 成员。

  4. 构造方法的继承: 子类会继承父类的构造方法,但子类的构造方法并不完全等同于父类的构造方法。子类的构造方法可以调用父类的构造方法,通常通过使用 super() 关键字。

     

  5. 重写: 子类可以重写(override)父类的方法,提供自己的实现。重写的方法具有相同的名称、返回类型和参数列表。使用 @Override 注解可以帮助编译器检测是否正确地重写了父类的方法。

  6. 多态性: 继承的一个重要概念是多态性。通过父类类型的引用指向子类对象,可以实现多态。这意味着可以使用父类的引用来调用子类重写的方法。

类的继承是面向对象编程的关键概念之一,它提供了一种有效的方式来组织和重用代码。然而,过度的继承可能导致代码的复杂性和耦合性增加,因此在设计中需要谨慎使用。

抽象类(Abstract Class)

抽象类(Abstract Class)是一种在面向对象编程中用于组织类层次结构的特殊类。抽象类本身不能被实例化,其目的是为了被继承而设计的。抽象类可以包含抽象方法和具体方法,用于定义一组相关的类的共同结构和行为。以下是有关抽象类的一些关键点:

  1. 关键字和语法: 抽象类在不同的编程语言中有不同的关键字,通常使用 abstract 关键字。在类声明中使用 abstract 关键字标识抽象类。语法示例:

  2. 抽象方法: 抽象类可以包含抽象方法,这些方法只有声明而没有具体的实现。子类继承抽象类时必须实现其抽象方法,否则子类也必须声明为抽象类。
  3. 实例化限制: 由于抽象类包含抽象方法,不能被直接实例化。要使用抽象类,必须创建它的非抽象子类,并在子类中提供抽象方法的具体实现。

  4. 构造方法: 抽象类可以有构造方法,但它们不能用于实例化抽象类。构造方法在子类实例化时被调用,用于执行必要的初始化工作。

  5. 继承: 子类通过关键字 extends 来继承抽象类。子类必须提供抽象类中所有抽象方法的具体实现,否则子类也必须声明为抽象类。

  6. 多态性: 抽象类支持多态性,允许通过抽象类类型的引用指向其子类的对象。这可以提高代码的灵活性和可维护性。

  7. 使用场景: 抽象类通常用于建模那些具有共同特征和行为的类的层次结构。它们提供了一种将共享的代码和结构放在一个地方的方式,同时又要求子类提供一些特定的实现。

总体而言,抽象类是一种有助于建立类层次结构和提高代码重用性的重要概念。通过定义抽象类,可以为相关的类提供一个公共接口,同时强制子类提供必要的实现。

接口(Interface)

接口(Interface)在面向对象编程中是一个非常重要的概念,用于定义类的行为和能力,而不涉及具体实现。接口定义了一组方法和常量的规范,这些方法和常量可以被其他类实现和使用。以下是有关接口的一些关键点:

  1. 定义与特点:

    • 接口定义了一个协议或契约,描述了类应具备的功能。
    • 接口中的方法默认为抽象方法(在某些语言中)。
    • 接口不包含实例变量,只包含常量。
    • 接口不能被实例化,也不能包含构造方法。
  2. 关键字和语法:

    • 在很多编程语言中,interface 是用于声明接口的关键字。
    • 语法示例(Java):

       

  3. 实现接口:

    • 类通过实现接口来声明它们将提供接口定义的所有方法的具体实现。
    • 使用 implements 关键字来实现接口。
    • 实现接口的类必须提供接口中所有方法的具体实现。
  4. 多接口:

    • 类可以实现多个接口,从而获得多种行为和能力。
    • 使用逗号分隔多个接口名称。
  5. 继承与接口:

    • 接口可以继承其他接口,从而形成接口的继承层次结构。
    • 使用关键字 extends 来实现接口的继承。
  6. 使用场景:

    • 接口常用于定义一组相关的操作或能力,以及这些操作或能力应如何实现。
    • 接口提供了一种约定,允许开发者编写更加模块化、可扩展和可维护的代码。
    • 接口还支持多态性,允许不同的类提供相同的接口实现,从而提高代码的灵活性。
  7. 与抽象类的比较:

    • 接口提供了一种更加灵活和模块化的方式来定义类的行为。
    • 抽象类提供了一个更加结构化和有状态的方式来定义类的行为。
    • 在某些情况下,接口和抽象类可以结合使用以实现更复杂的设计需求。

总的来说,接口是一种强大的工具,用于定义类的行为和能力,支持模块化、可扩展和可维护的软件设计。通过接口,可以实现代码的重用、降低耦合度和提高系统的可扩展性。

4.类的多态

多态(Polymorphism)是面向对象编程中的一个重要概念,它允许使用同一接口(方法签名)来表示不同类型的对象,从而提高代码的灵活性和可重用性。多态包括编译时多态(静态多态)和运行时多态(动态多态)两种形式

    1. 继承:多态性的基础是类之间的继承关系。子类继承了父类的方法和属性,因此可以替代父类的使用。

  1. 运行时多态(动态多态):

    • 也称为方法重写(Method Overriding)和接口实现。
    • 在运行时确定使用哪个方法,具体执行哪个方法取决于对象的实际类型。
    • 运行时多态是通过继承和接口实现的,子类可以重写父类的方法,实现类可以实现接口中的方法。

     

  2. 多态的好处:

    • 代码灵活性:可以使用通用的接口来处理不同类型的对象,而无需关心具体对象的类型。
    • 代码重用:通过多态,可以编写通用的代码,适应不同的对象。
    • 扩展性:在不修改现有代码的情况下,可以很容易地添加新的类和方法。
  3. 注意事项:

    • 多态只能应用于对象,而不是基本数据类型。
    • 在运行时多态中,父类引用指向子类对象,但通过该引用只能调用父类和重写的子类方法,不能调用子类特有的方法。

总的来说,多态是面向对象编程的一个关键概念,通过编译时多态和运行时多态,可以实现更加灵活和可扩展的代码结构。

五.类的高级特性

类的高级特性涵盖了面向对象编程中一些复杂而强大的概念和机制。以下是一些类的高级特性:

  1. 继承:

    • 继承是一种机制,允许一个类(子类/派生类)从另一个类(父类/基类)继承属性和方法。
    • 子类可以重用父类的代码,减少冗余,提高代码的可维护性。
    • 子类可以扩展或重写父类的方法。
  2. 抽象类:

    • 抽象类是不能被实例化的类,用于表示一种基础的概念,它可以包含抽象方法和具体方法。
    • 抽象方法是只有方法签名而没有实现的方法,必须在子类中被实现。
  3. 接口:

    • 接口是一种完全抽象的类,它只包含方法的声明而没有方法的实现。
    • 类可以实现多个接口,从而达到多继承的效果。
    • 接口提供了一种规范,确保实现类必须提供指定的方法。
  4. 多态:

    • 多态允许使用同一接口来处理不同类型的对象,使得代码更加灵活和可复用。
    • 编译时多态通过方法重载实现,而运行时多态通过方法重写和接口实现实现。
  5. 封装:

    • 封装是一种将数据和操作数据的方法捆绑在一起的概念。
    • 通过访问修饰符(如私有、保护、公共),可以限制对类的部分成员的访问,提高安全性和隐藏实现细节。
  6. 组合:

    • 组合是一种将对象包含在其他对象中的关系,通过这种方式,一个类可以包含其他类的实例作为成员变量。
    • 组合是一种强大的代码复用机制,比继承更加灵活。
  7. 泛型:

    • 泛型允许在编写类和方法时使用类型参数,使得这些类和方法可以处理多种数据类型而不需要重复编写代码。
    • 提高代码的类型安全性和重用性。
  8. 反射:

    • 反射是一种让程序在运行时获取自身信息的机制,包括类的结构、方法和字段等。
    • 反射使得可以在运行时动态创建对象、调用方法,以及获取类的元数据。

这些高级特性共同构成了面向对象编程的基础,它们提供了强大的工具和机制,使得程序设计更加灵活、可维护和可扩展。

 

 

标签:JAVA,语言,构造方法,子类,多态,接口,内容,抽象类,方法
From: https://www.cnblogs.com/xuan123/p/17935585.html

相关文章

  • 无涯教程-Java 正则 - MatchResult String group()函数
    java.time.MatchResult.group()方法返回与上一个匹配项匹配的输入子序列。Stringgroup()-声明Stringgroup()Stringgroup()-返回值与上一个匹配项匹配的(可能为空)子序列,为字符串形式。Stringgroup()-异常IllegalStateException-如果尚未尝试匹配,或者上一个匹......
  • 无涯教程-Java 正则 - MatchResult String group(int group)函数
    java.time.MatchResult.group(intgroup)方法返回在上一次匹配操作期间给定组捕获的输入子序列。Stringgroup(intgroup)-声明以下是java.time.MatchResult.group(intgroup)方法的声明。intgroup(intgroup)group  - 该匹配器模式中捕获组的索引。Stringgroup......
  • Java+SpringBoot+Maven+TestNG+httpclient+Allure+Jenkins实现接口自动化
    一、方案需求目标:测试左移,测试介入研发过程,验证单接口正常及异常逻辑选用工具:Java、SpringBoot、Maven、TestNG、httpclient、Allure、Jenkins方案:创建测试接口测试工程,参照研发设计文档和设计思路,编写正常及异常用例,直接调用服务端接口,覆盖接口逻辑和验证异常处理,提升接口健壮......
  • 无涯教程-Java 正则 - MatchResult int end(int group)函数
    java.time.MatchResult.end(intgroup)方法返回在此匹配期间给定组捕获的子序列的最后一个字符之后的偏移量。intend(intgroup)-声明intend(intgroup)group  - 该匹配器模式中捕获组的索引。intend(intgroup)-返回值最后一个字符匹配后的偏移量。intend(......
  • java基础语言期末复习
    一.类的封装1.类的封装是指将类的实现细节隐藏起来,仅向外部提供有限的接口进行访问。这样可以保护数据的安全性和完整性,同时也能够降低代码的耦合度。具体来说,类的封装可以通过以下方式实现:将类的成员变量设为私有属性,只能在类的内部访问。对于需要被外部访问的成员变量,可以......
  • 如何批量去掉文本的括号前后缀内容
    静下心想想,日常的工作中,你们有没有遇到过这样的场景:ERP系统中的客户名称是按照项目、工程来命名的,我们应该如何通过这样的客户名称来提取得到真正的公司名称?这里,我用AIGC随机生成了一些样本。1.(海生项目)卓越光电科技有限公司2.(蓝海贸易项目)天翼有限公司3.鸿图科技(......
  • 探索大语言模型 :首场英智未来AI沙龙精彩回顾
    12月27日,英智未来主办的第一期英智AI沙龙《大语言模型创新应用与最新发展现状》在深圳南山顺利举行。本次沙龙汇集了来自IT、文娱、金融等行业的精英人士和AI爱好者,共同探讨大语言模型在各领域的创新应用及其发展趋势。  以大模型为核心的通用人工智能正在驱动新一轮智......
  • 探索大语言模型 :首场英智未来AI沙龙精彩回顾
    12月27日,英智未来主办的第一期英智AI沙龙《大语言模型创新应用与最新发展现状》在深圳南山顺利举行。本次沙龙汇集了来自IT、文娱、金融等行业的精英人士和AI爱好者,共同探讨大语言模型在各领域的创新应用及其发展趋势。以大模型为核心的通用人工智能正在驱动新一轮智能革命的持续演......
  • 整数除法:floor、ceil、round——《初学C语言第42天》
    //////整数除法——舍小数,取整数//1.floor()头文件<math.h>//功能:把一个小数向下取整,即如果被计算的数是2.2,那向下取整的结果就为2.000000//原型:doublefloor(doubex);//x:是需要计算的数//返回值://   成功:返回一个double类型的数,此数默认有6位小数//   ......
  • ECharts 是一个使用 JavaScript 实现的开源可视化库¹²³⁴。它可以流畅地运行在 PC
    ECharts是一个使用JavaScript实现的开源可视化库¹²³⁴。它可以流畅地运行在PC和移动设备上,兼容当前绝大部分浏览器(如IE8/9/10/11,Chrome,Firefox,Safari等)²³⁴。ECharts底层依赖轻量级的Canvas类库ZRender¹²³,提供直观,生动,可交互,可高度个性化定制的数据可视化图表¹......