Java中的类和对象
来源:互联网 发布:mac os x 5k原生壁纸 编辑:程序博客网 时间:2024/04/30 00:24
Java中的类和对象
了解如何使类,字段,方法,构造函数和对象在Java应用程序中协同工作
类,字段,方法,构造函数和对象是基于对象的Java应用程序的构建块。本文将教你如何声明类,通过字段描述属性,通过方法描述行为,通过构造函数初始化对象,以及从类实例化对象并访问它们的成员。在此过程中,您还将了解setters和getter,方法重载,设置字段,构造函数和方法的访问级别等。如果你想进一步与字段和方法,你还可以下载免费的Java 101引用显示常量,递归和其他技术在基于对象的编程。什么是基于对象的应用程序?
基于对象的Java应用程序是一种Java应用程序,其设计基于声明类,从中创建对象以及设计这些对象之间的交互。
类声明
一类是制造对象的模板。您可以通过指定class
关键字以及为其命名的非保留标识符来声明类。一对匹配的打开和关闭大括号({
和}
)跟随并分隔类的主体。此语法如下所示:
按照惯例,类名称的第一个字母为大写,后续字符为小写(例如,Employee
)。如果名称由多个字组成,每个单词的第一个字母为大写(例如SavingsAccount
)。这种命名约定称为驼峰化。
以下示例声明一个名为的类Book
:
类的主体填充有字段,方法和构造函数。将这些语言特征组合成类称为封装。这种能力使我们能够在更高层次的抽象(类和对象)中编程,而不是分别关注数据结构和功能。
实用程序类
类可以被设计为与对象制造无关。相反,它作为类字段和/或类方法的占位符存在。这样的类称为实用程序类。实用程序类的示例是Java标准类库的Math
类。有关另一个示例,请参阅Java引领中的字段和方法。
多类应用程序和main()
Java应用程序由一个或多个类实现。小型应用程序可以由单个类来适应,但是更大的应用程序通常需要多个类。在这种情况下,其中一个类被指定为主类并包含main()
入口点方法。例如,清单1给出了使用三个类构建的应用程序:A
,B
和C
; C
是主类。
清单1.具有多个类的Java应用程序
您可以在单个源文件中声明这三个类,例如D.java
。然后,您将编译此源文件,如下所示:
编译器生成三个类文件:A.class
,B.class
,和C.class
。通过以下命令运行此应用程序:
您应该观察以下输出:
或者,您可以在其自己的源文件中声明每个类。按照惯例,源文件的名称与类名称匹配。你将宣布A
在A.java
,例如。然后,您可以单独编译这些源文件:
为了节省时间,您可以通过将文件名替换为星号(但保留.java
文件扩展名)来一次编译所有三个源文件:
无论哪种方式,您都可以通过以下命令运行应用程序:
公共类
Java允许您通过public
关键字声明具有公共访问权限的类。当声明类public
时,必须将其存储在具有相同名称的文件中。例如,你会存储public class C {}
在C.java
。您可以public
在源文件中只声明一个类。
当设计多类应用程序时,您将指定其中一个类作为主类,并main()
在其中找到方法。但是,没有什么可以阻止你main()
在其他类中声明方法,也许是为了测试目的。此技术如清单2所示。
清单2.声明多个main()
方法
编译源代码后,您需要执行下面的命令来测试辅助类A
和B
,并运行应用程序类C
:
然后,您将观察以下输出行,每个java
命令一行:
小心使用main()
main()
在每个类中放置一个方法可能会让人困惑,特别是如果你忘记记录主类。此外,在将应用程序投入生产之前,您可能会忘记删除这些方法,在这种情况下,它们的存在会向应用程序添加批量。此外,有人可能运行一个支持类,这可能会中断应用程序的环境。
字段:描述属性
类在状态(属性)方面对真实世界实体进行建模。例如,车辆具有颜色,支票帐户具有余额。类也可以包括非实体状态。无论如何,状态存储在称为字段的变量中。字段声明具有以下语法:
字段声明可选地以关键字static
(对于非实体属性)开头,type
并且后面跟着一个非保留identifier
字段,该字段命名字段。可以通过指定=
后跟expression
具有兼容类型的字段来显式初始化字段。分号终止声明。
以下示例声明了一对字段Book
:
在title
和pubYear
字段声明是相同的变量声明我提出了“ 的Java 101:初级Java语言特性。” 这些字段称为实例字段,因为每个对象都包含自己的副本。
在title
与pubYear
领域的特定书店值。但是,您可能希望存储独立于任何特定图书的状态。例如,您可能想要记录Book
创建的对象的总数。以下是您的操作方法:
此示例声明一个count
整数字段,用于存储Book
创建的对象数。声明以static
关键字开头,表示在内存中只有该字段的一个副本。每个Book
对象可以访问此副本,没有对象有自己的副本。因此,count
被称为类字段。
初始化
前面的字段未分配值。当你不明确初始化一个字段时,它的隐含初始化的所有位设置为零。您将此默认值解释为false
(for boolean
),'\u0000'
(for char
),0
(for int
),0L
(for long
),0.0F
(for float
),0.0
(for double
)或null
(对于引用类型)。
但是,也可以在声明字段时显式初始化字段。例如,您可以指定static int count = 0;
(这是没有必要的,因为count
默认为0), ,String logfile = "log.txt";
,static int ID = 1;
甚至double sinPIDiv2 = Math.sin(Math.PI / 2);
。
虽然可以通过直接赋值来初始化一个实例字段,但是在构造函数中执行这个初始化更为常见,这将在后面演示。相反,类字段(特别是类常量)通常通过将表达式直接分配给字段来初始化。
寿命和范围
实例字段在其对象被创建时诞生,并在对象被垃圾回收时消失。类字段在类加载时生成,并在类卸载或应用程序结束时死机。此属性称为生存期。
实例和类字段可以从它们的声明到它们的声明类的结尾。此外,当给定合适的访问级别时,它们仅在对象上下文中的外部代码(例如字段)或对象和类上下文(对于类字段)可访问。此属性称为范围。
方法:描述行为
除了对真实世界实体的状态建模之外,类还对其行为进行建模。例如,车辆支持运动,并且支票账户支持存款和取款。类也可以包括非实体行为。无论如何,Java程序员使用方法来描述行为。方法声明具有以下语法:
方法声明可以选择以关键字开头static
(对于非实体行为),并继续使用一个方法returnType
声明identifier
,后面跟一个名为方法的非保留。然后名称后跟一个圆括号分隔的可选parameterList
。一个括号分隔的主体,包含在调用方法时执行的代码。
在返回类型标识从通过该方法返回值的类型return
声明,我将在后面讨论。例如,如果一个方法返回字符串,它的返回类型将被设置为String
。当方法不返回值时,其返回类型设置为void
。
该参数列表是一个逗号分隔的参数声明列表:每个声明包含一个类型后跟一个非保留标识符名称参数。一个参数是接收一个变量参数(表达式值,其类型与对应的参数兼容)当一个方法或构造函数被调用。
参数是其方法或构造函数的本地参数。它在调用方法或构造函数时就存在,当方法或构造函数返回到其调用者时消失。换句话说,它的生命周期是方法执行。参数可以由方法中的任何代码访问。它的范围是整个方法。
以下示例声明Book
类中的四个方法:
该getTitle()
和getPubYear()
方法返回各自领域的价值。他们使用return
语句将这些值返回给调用者。请注意,此语句的表达式的类型必须与方法的返回类型兼容。
该setTitle()
和setPubYear()
方法允许您设置的值title
和pubYear
领域。它们的返回类型设置为关键字void
,以指示它们不向调用者返回任何值。所有四个方法都称为实例方法,因为它们只影响它们被调用的对象。
设置和吸气
在“ set
”前缀标识setTitle()
,并setPubYear()
为setter方法,这意味着它们设置的值。类似地,“ get
”前缀标识getTitle()
和getPubYear()
作为getter方法,这意味着它们获得值。
如果你想知道关于代替直接访问需要的setter / getter方法title
和pubYear
,你会发现在“一些很好的理由是什么getter和setter点?在StackOverflow.com”主题。
的getTitle()
,getPubYear()
,setTitle()
,和setPubYear()
的方法影响的单个对象的副本title
和pubYear
领域。但是,您可能需要声明一个独立于任何特定图书的方法。例如,您可能需要引入一个输出Book
对象数的方法,如下所示:
此示例声明一个showCount()
方法,将输出count
字段的值。声明以static
关键字开头,表示此方法属于类,无法访问单个对象状态; 不需要创建对象。因此,showCount()
被称为类方法。
局部变量
在方法或构造函数中,您可以声明其他变量作为其实现的一部分。这些变量称为局部变量,因为它们是方法/构造函数的局部变量。它们仅在方法或构造函数执行时存在,并且无法从方法/构造函数外部访问。请考虑以下示例:
此示例提供了一个名为average
计算和输出double
s 数组的平均值的方法。除了参数values
,它声明局部变量sum
并i
帮助计算。sum
其生命期和范围从其声明点到方法结束。i
其生命周期和范围仅限于for
循环。
- java中的类和对象
- JAVA中的对象和类
- Java中的类和对象
- java中的类和对象
- Java中的对象和类
- Java中的类和对象
- JAVA中的类和对象
- Java中的类和对象
- Java中的类和对象
- java 中的类和对象
- Java中的类和对象
- java中的类和对象
- JAVA中的类和对象
- Java中的其他类和对象
- JAVA 中的类和对象(1)
- Java 中的类锁和对象锁
- Java中的Class类和Class对象
- Java中的类和对象的理解
- (三十三)QToolButton
- 电商产品的购物车设计细节
- sync、fsync与fdatasync
- ScrollView/NestedScrollView嵌套RecyclerView滑动不流畅
- Swift 官方文档笔记
- Java中的类和对象
- 开辟动态数组
- Android核心技术之(5)---消息机制与异步任务
- 让Fragment的layout也能够实现沉浸(透明)状态栏
- 基于.NET平台常用的框架整理
- 火狐浏览器刷新问题
- 感情的危机(一)
- Android 实现WebView点击图片查看大图列表及图片保存
- 基本Java语言特性