博客
关于我
(Java学习)二、类和对象
阅读量:634 次
发布时间:2019-03-14

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

3 类和对象

3.1 封装,构造,this,private

在Java编程中,封装是一种将代码和数据以及操作紧密结合的方式,以提高代码的模块化。构造方法是类的初始化方式。当手动提供构造方法时,系统不会自动提供低级别的构造方法,建议手动编写默认构造。

最佳实践是每次都手动编写默认构造,避免由系统生成。例如:

public class MyClass {    private MyClass() {}}

自动化构造可能导致隐藏的字段或不一致的状态,手动编写构造更具可控性和安全性。

3.1.2 API

API(应用程序编程接口)是定义程序之间如何交互的接口。通过API,开发者可以在不同程序中调用相同的功能模块,实现跨平台的代码重用。例如,第三方库的API可以帮助简化复杂的功能实现,提高开发效率。

使用标准化API有助于避免代码冗余,确保代码的一致性和可维护性。API的设计规则指导如何定义数据结构和方法,提升代码的可读性和可扩展性。

3.1.3 String和StringBuilder

String在Java中是不可变对象,由final关键字和private-final共同保证其不可变性。在字符串拼接操作中,采用StringBuilder更高效。StringBuffer是其线性结构,内部基于动态数组实现。

StringBuilder的内部原理是基于字节数组,当多次字符串操作时,避免频繁新建String对象的复制开销。String除提供常量池优化外,不能经过多次修饰,适合不可变操作。如果需要多次修改,应使用StringBuilder。

详情请参考Java语言规范和性能优化指南。

3.1.4 ArrayList 集合基础

集合是空间动态 grown 的数据存储模型,可容纳异类型数据。ArrayList基于动态数组实现,允许快速随机访问和修改操作。主要特征是:

  • Linhalthanh clinicians高效访问和修改元素
  • 随机访问速度优于数组
  • 动态 sized自动扩展
  • 发生自动克隆副本操作

ArrayList是集合框架中最常用的类,广泛应用于数据存储和操作。

3.2 继承

继承是OOP中多态性的一个基础机制。子类会继承父类的属性和方法,通过找优先顺序(即田刚查找算法)找到目标属性或方法。关键字包括this、super、extends,分别用于引用类成员变量或方法。

默认的子类构造方法应以super()开头,以确保正确初始化父类状态。在方法覆盖中,使用@Override注解以标示重写方法,确保准确性。无覆盖冲突不能放置重写方法。

3.2.2 访问修饰符

访问修饰符决定了能否从外部访问类成员。命名区域内的类成员去外部不可见的最大原则,确保代码的安全性和可维护性。最终只能通过暴露的API或成员方法访问受保护成员,为安全性的哦提供层级结构。

最终可见性规则是:public > default(无修饰) > protected > private。跨包子类不能访问父包�unker成员变量或方法,必须通过访问级别调整。

3.2.3 final

final修饰可以修饰成员变量和方法,锁定状态不可变。成员变量不能被改写,常量池优化使得相同指令行赋值共享同一常量。静态变量在类范围内唯一,动态变量与对象相关联。

方法锁定执行路径,当方法被标记为final时,无法在子类中重写,只能实现抽象类方法。final方法无法被动态绑定,但可以导致潜在性能提升。

3.2.4 static

通过static关键字能够创建与逻辑关联却存储于常规堆栈中的对象,提升利用率。静态成员可以被其它类也访问和修改,实现类间解耦。注意非静态成员需要对象创建后才能访问。

静态方法和变量无法访问非静态成员,保持单纯性。静态与动态关联通过static关键字实现,重要的是理解静态成员的特性和正确使用。

详情可参考Java语言规范和程序设计实践。

3.2.5 多态

多态的核心机制包括烁然定类型(JVM通过是的类型来查看对象属性和方法),多态的实现依赖于存储与编解码结合的指针-Ternary的概念。当父Reference类型指向子类对象时,多态的不同表现发生。

成员方法在编译时只根据调用对象的类型编码,而阻断变量在运行时只看引用类型。多态的特点是编译时看左侧,运行时看右侧。多态是软件工程中强大而灵活的机制,在设计模式中发挥重要作用。

3.2.6 抽象类

抽象类是对事物的抽象化表达,适用于定义行为和接口,而其实例难以实现。abstract关键字标记多态和抽象性质,抽象在类结构中表示“是”,而never implementations表示具体实现。

实现abstraction的关键方式有两种:通过定义抽象方法或属性,或者扩展实现接口。抽象类无法被直接实例化,但可以被子类继承并实现其抽象成员。

3.2.7 接口

接口是特殊类型的类化逻辑,定义了一组方法的行为和签名但不提供实现。通过接口可以实现多接,促进模组化。默认接口成员变量被Final static 吸引,接口方法是抽象方法,提供的行为复杂度不可忽视。

接口的所有方法必须被实现,但实现可以有选择性。当接口的覆盖性质需要时,可指定实现类。通过多个接口的组合,建立多载体基,符合面向接口编程的需求。

3.2.8 内部类

内部类可以是成员类,也可以是局部类。成员内部类是在类内部定义的类,访问外部成员时需要注意访问级别。局部内部类定义在方法内部,通常用于匿名性质,不产生名称,仅用于逻辑完整性。

切勿在外部类使用成员类而导致内存泄漏,确保内存能正确被释放和管理。匿名内部类通常用于局部拼接行为,扩展代码复杂度。

3.2.9 匿名内部类

匿名内部类允许多次引用但只产生一些建立行为结果,具有一些代码便捷性。以下是一些要点:

  • 只能在方法或构造函数中定义
  • 没有名字,只能通过引用变量使用
  • 实现接口,访问层级方法得当
  • 必需在范围内绕过构造复杂度

匿名内部类通常用于回调或短期处理,避免直接操作外部资源。正确使用匿名内部类需要谨慎,避免无法推断的潜在问题。

综上所述,Java的研究和特性体系设计,包括封装、继承、多态、抽象等多项机制提供了全面的编程能力。

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

你可能感兴趣的文章
Nmap渗透测试指南之指纹识别与探测、伺机而动
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NMF(非负矩阵分解)
查看>>
nmon_x86_64_centos7工具如何使用
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.7 Parameters vs Hyperparameters
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>
nnU-Net 终极指南
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
NO 157 去掉禅道访问地址中的zentao
查看>>
no available service ‘default‘ found, please make sure registry config corre seata
查看>>
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
查看>>
no connection could be made because the target machine actively refused it.问题解决
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
查看>>
No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
查看>>
No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
查看>>