博客
关于我
java基础--03(复用类)
阅读量:714 次
发布时间:2019-03-17

本文共 1639 字,大约阅读时间需要 5 分钟。

Java对象关系的深度探索

在 Java编程的世界中,继承和抽象类是构建复杂对象关系的基石。本文将探讨这些核心概念的实现细节,以及它们在实际开发中的应用。


1. 继承

在 Java中,类之间可以通过 继承 关系建立层次结构。这种关系意味着一个新类(导出类)可以利用基类的属性和功能,扩展其特性。

默认访问控制符

Java默认的访问控制符是 包访问权限。因此,导出类只能访问基类的 public 成员。如果希望确保导出类无法访问基类的其他成员,需为基类的成员加上 private 修饰符。

super 关键字

导出类构造器默认会调用基类的无参构造器(默认构造器)。若基类没有默认构造器或需使用有参构造器,可以使用 super 关键字在导出类构造器的第一行调ably 基类构造器。

方法重载

Java允许方法重载,即在基类中定义的一个方法在导出类中可以有不同的名铭。这种情况下,导出类的方法不会屏蔽基类中的任何方法。

组合与继承的选择

组合 是将现有类的对象嵌入到新的类中,表现为新类内部含有该对象,用户盯nested对象的接口。而 继承 则表示类和基类共享同一基底,基类的方法和属性被导出类继承。

在选择组合还是继承时,可以问问自己一个问题:是否有需要向上转型的情况?如果有,则采用继承;否则,则选择组合。


2. 抽象类

抽象类是用于定义一组共性 MethodInfo 特点的通用模板。由于其定义的方法无法实现,通常可以通过继承来提供一个不具体的基底。

核心特点

  • 抽象方法:定义了方法名但不提供实现。
  • 不可实例化:抽象类不能被创建对象。
  • 抽象类的扩展:仅需在继承自抽象类的子类中实现抽嘬方法后,才能实例化子类。

使用场景

  • 抽象类的主要用途在于让一组共性功能从基类中提取,均匀化各子类的实现方式。

细节说明

  • 抽象类可以定义非抽象方法:并非所有的方法都必须是抽象的,子类可以重用基类中的方法。

3. 接口

接口式定义了一组规则或功能,允许多个实现类通过实现其中的方法与接口契合。其特别之处在于接口可以被多继承,但实现上需要明确指定。

接口特性

  • 全局常量:接口中的常量具有一定的安全性,是隐式的 static 和 final 的组合。
  • 策略模式:允许根据参数选择不同的处理逻辑。
  • 适配器模式:用于处理不兼容的接口,通过适配器实现功能一致性。

示例

public interface Processor {    String name();      Object process(Object o);}public class Upcase extends StringProcessor {    public String process(String input) {        return input.toUpperCase();    }}

4. Final 关键字

final 是用于定义不可改变或不可变的条件。它适用于数据和方法,确保它们在运行时保持恒定。

数据总结

  • final 数据:只能为基本类型且必须赋初值。
  • static final 数据:只有一份常量,初始化时不可被修改。
  • final 方法:预防重写,只有基类的方法可以是 final。

3个问题解答

  • 抽象类是否需要实现接口方法?

    • 否。抽象类属于继承关系,无需实现接口方法。但若直接继承一个接口,则需实现其所有抽象方法。
  • 日期处理类在 Java 的哪个包中?

    • Java 提供了 java.util 包中的 Date 类,用于处理日期和时间。
  • Hibernate 中的一对多双向关联中的 <set> 元素的 inverse 属性.

    • inverse 属性用于指定待关联的方向,对应的 <one-to-many> 关系用于从一边到多边关系的映射。当需要从多边到一边时,需在 <set> 中指定 inverse="true"。

  • 通过以上知识,编程时可以更灵活地设计复杂的对象关系,从而构建高效、可维护的应用程序。

    转载地址:http://zehhz.baihongyu.com/

    你可能感兴趣的文章
    python基于flask搭建http服务(一)—— 实现数据查询和Excel导出
    查看>>
    Python块键盘/鼠标输入
    查看>>
    python在心理学研究中的应用有哪些_心理学在线研究可用平台简介和应用进展
    查看>>
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    Python和RF编写web自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>