java对象和类
java对象和类的学习
标签(空格分隔):Java
为对象定义类
面向对象程序设计就是使用对象进行程序设计,对象代表现实世界中可以明确标识的一个实体。
- 一个对象的状态(state也称特征或者属性)是由具有当前值的数据域来表示的。
- 一个对象的行为(behavior,也称动作)是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。
使用一个通用类来定义同一类型的对象,类是一个模板、蓝本或者说是合约,用来定义对象的数据域是什么以及方法是做什么的。一个对象就是类的一个实例,可以从一个类中创建多个实例,创建实例的过程叫做实例化。
java类使用变量定义数据域,使用方法定义动作。除此之外,类还提供了一种称为构造方法的特殊类型的方法,调用它可以创建一个新对象。构造方法本身是可以完成任何动作的,但是设计构造方法是为了完成初始化动作。
含有main方法的类称为主类。
可以把两个类放在同一个文件中,但是文件中只能有一个类是公共类,公共类必须与文件名一样。当文件中的类进行编译时,会产生两个.class文件
使用构造方法构造对象
构造方法在使用new操作符创建对象的时候被调用。
构造方法是一种特殊的方法,它有以下三个特征:
- 构造方法必须具备和所在类相同的名字。
- 构造方法没有返回值类型,甚至连void也没有。
- 构造方法是在创建一个对象使用new操作符时调用,构造方法的作用是初始化对象。
构造方法也可以重载
通常,一个类会提供一个没有参数的构造方法,这样的构造方法称为无参构造方法。
一个类可以不定义构造方法,在这中情况下,类中隐含定义一个方法为空的无参构造方法,这个构造方法称为默认构造方法,当且仅当类中没有明确定义任何构造方法时才会自动提供它。
通过引用变量访问对象
对象的数据和方法可以运用点操作符通过对象的引用变量进行访问。
引用变量和引用类型
对象是通过对象引用变量来访问的,该变量包含对对象的引用。
//对象引用变量的声明
ClassName objectRefVar;
本质上来说,一个类是一个程序员定义的类型,类是一种引用类型,这意味着该类类型的变量都可以引用该类的一个实例。
//创建一个对象
new ClassName();
//声明对象引用变量、创建对象、将对象的引用赋值给对象引用变量。
ClassName objectRefVar = new ClassNmae();
//objectRefVar中放的是对ClassName对象的一个引用。
访问对象的数据和方法
在面向对象编程中,对象成员可以引用对象的数据域和方法。在创建一个对象之后,它的数据和方法可以使用点操作符(.)来访问和调用,该操作符也称为对象成员访问操作符。
objecrRefVar.dataField//引用对象的数据域
objecrRefVar.method(arguments)//调用对象的方法
通常,我们创建一个对象,然后将它赋值给一个变量,之后就可以使用这个变量来引用对象。有时候,一个对象在创建之后并不需要引用。这中情况下,就可以创建一个对象,而并不讲=将它明确赋值给一个变量。
数据域也可以是引用型的
class Student{
String name;
}
NullPointerException 是一种常见的运行时错误,当调用值为 null 的引用变量上 的方法时会发生此类异常。
引用类型数据域的默认值是null,数值类型数据域的默认值为0,Boolean类型数据域的false,char类型数据域的默认值是'\u0000',java没有给方法中的局部变量赋默认值。
基本类型变量和引用类型变量的区别
每个变量都代表一个存储值的内存位置。
基本类型变量,对应内存所存储的值是基本类型值。
引用类型变量,对应内存所存储的值是一个引用,是对象的存储地址。
将一个变量赋值给另一个变量时
基本类型变量,就是讲一个变量的实际值赋给另一个变量
引用类型变量,就是讲一个变量的引用赋给另一个变量,两个变量的值是同一个引用,修改一个变量中的引用,另一个也会修改。
静态变量和方法
如果想让一个类的所有实例共享数据,就要使用静态变量,也称为类变量,静态变量将变量值存储在一个公共的内存地址。
无须创建类的实例就可以调用静态方法。
声明静态方法和静态变量时加static。
类中的常量是被该类的所有对象共享的,因此,常量声明时要加final static。
实例数据和实例方法是在实例创建之后才能调用的。
静态数据和静态方法是可以通过引用变量或者他们的类名来调用。
实例方法可以调用实例方法和静态方法,访问实例数据域和静态数据域。
静态方法可以调用静态方法,访问静态数据域。
静态方法不能调用实例方法,不能访问实例数据域,因为静态方法和静态数据域不属于某个特定的对象。
如果一个变量或者方法依赖于类的某个几天实例,那么应该将它定义为实例变量或实例方法。
可见性修饰符
可见性修饰符可以用于确定一个类以及它的成员的可见性。
可以在类、方法和数据域前使用public修饰符,表示它们可以被任何其他的类访问,如果没有使用可见性修饰符,那么默认类。方法和数据域是可以被同一个包中的任何一个类访问,这称为包私有或者包内访问。
包可以用来组织类。
package packageName;
在这行语句之前不能有注释和空白。
private修饰符
private修饰符限定方法和数据域只能在它自己的类中被访问。
数据域封装
将数据域设为私有保护数据,并且使类易于维护。
为了避免对数据域的直接修改,应该使用private修饰符将数据域声明为私有的,这称为数据域封装。
在定义私有数据域的类外的对象是不能直接访问这个数据的,为了能够访问私有数据域,可以提供一个get方法返回数据域的值,为了更新一数据域,可以提供一个set方法给数据域设置新值,get方法称为访问器,set方法称为修改器。
public returnType getPropertyName()
public boolean isPropertName()
public void setPreopertName(dataType propertValue)
向方法传递对象参数
给方法传递一个对象,是将对象的引用传递给方法。
java只有一种参数传递方式:值传递(基本类型值和引用值)
数组既可以存储基本类型值,也可以存储对象,对象数组实际上是引用变量的数组。
不可变对象和类
可以定义不可变类来产生不可变对象,不可变对象的内容不能被改变。
如果一个类是不可变的,那么它的所有数据域必须都是私有的,而且没有对任何一个数据域提供公共的set方法。
要使一个类成为不可变的,它必须满足下面的要求:
- 所有数据域都是私有的
- 没有修改器方法
- 没有一个返回指向可变数据域的引用的访问器方法
如果一个局部变量和一个类变量具有相同的名字,那么局部变量优先。同名的类变量将被2隐藏。
this引用
关键字this引用对象自身,它也可以在构造方法内部用于调用同一个类的其他构造方法。
关键字this是指向调用对象本事的引用名,可以用this关键字引用对象的实例成员。this可以省略。
使用this引用隐藏数据域
this关键字可以用于引用类的隐藏数据域。将数据域名用作参数名,在这个方法内部,这个数据域被隐藏,为了给它设置新值,需要在方法中引用隐藏的数据域名,隐藏的静态变量可以简单第通过“类名。静态变量”的方式引用,隐藏的实例变量就需要使用关键字this来引用。
使用this调用构造方法
public class YourClass {
String name;
int age;
public YourClass(String name){
this.name = name;
}
public YourClass(String name,int age){
this(name);//调用上面的构造方法。
this.age = age;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构