0

0

全面理解Java类和对象

高洛峰

高洛峰

发布时间:2017-01-20 17:47:10

|

1347人浏览过

|

来源于php中文网

原创

面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。在面向对象程序设计(oop)中,不必关心对象的具体实现。在传统的结构化程序设计中,算法是第一位的,数据结构是第二位的,即首先确定如何操作数,再考虑如何组织数据,以方便操作。而oop则颠倒了这种次序,将数据放在第一位,然后再考虑操作数据的算法。

一、类

类是构造对象的模板和蓝图。通俗地说,类相当于建筑的图纸,而对象相当于建筑物。由类构造对象的过程称为创建对象的实例。

Java中通过关键字class定义“类”,后跟类名。例如:

class Person{
  // 类的主体内容
}

定义了一个Person类。

立即学习Java免费学习笔记(深入)”;

1.字段和方法

定义一个类时,可以在类里设置两种类型的元素:数据成员和成员函数。其中数据成员是一种对象,可以是任何类型。如果是指向对象的句柄,则必须初始化这个句柄,通过构造器与一个实际对象连接起来。如果是基本数据类型,则可以在类定义的位置直接初始化。

每个对象都为自己的数据成员保有存储空间;数据成员不会在对象之间共享。

class Person{
  String name;
  double salary;
}

通过new关键字创建一个对象。如:

Person p = new Person();

(1)主成员的默认值

某个主数据类型属于一个类成员,那么即是不明确进行初始化,也可以保证他们获得一个默认值。

全面理解Java类和对象

如果一个变量作为类的成员变量,那么对于主类型一定会得到初始化,要特别注意初始化的值。对于局部变量则会得到一些随机值,如:int x;不会自动初始化为0。

(2)方法

方法的基本组成部分包括名字、自变量、返回类型以及主体。方法的基本形式为:

返回类型 方法名(/*自变量列表*/) {/* 方法体 */}

返回类型是指调用方法之后返回的数值类型。方法名是对具体方法的标识和引用。自变量列表列出****了想传递给方法的信息类型和名称。

在Java中方法的调用形式为对象名.方法名

1. 用句柄操作对象

尽管Java是完全面向对象的。但是,操作的标识符实际指向一个对象的“句柄”,又称“引用”。句柄是可以独立存在的,并不是说,拥有一个句柄就必须有一个对象与之对应。比如,int i;定义了一个整型变量i,并不表示它一定有值。如,创建一个String类型的句柄:

String s;

这里只是创建了句柄,并没有创建对象。由于s并没有与之关联的对象,如果调用s将出现异常。所以,创建时需要进行初始化。

String s = "hello";

在Java中,通过new关键字创建对象,它将返回对象的引用(即句柄)。所以

String s = new String("hello");

创建了一个内容为"hello"的String对象,并将该对象的句柄(引用)交给了s保存。

2. 数据存储的位置

ShopWind网店系统
ShopWind网店系统

ShopWind网店系统是国内最专业的网店程序之一,采用ASP语言设计开发,速度快、性能好、安全性高。ShopWind网店购物系统提供性化的后台管理界面,标准的网上商店管理模式和强大的网店软件后台管理功能。ShopWind网店系统提供了灵活强大的模板机制,内置多套免费精美模板,同时可在后台任意更换,让您即刻快速建立不同的网店外观。同时您可以对网模板自定义设计,建立个性化网店形象。ShopWind网

下载

1.寄存器。最快的保存区域,位于处理器内部。寄存器的大小有限,由编译器的分配大小。

2.堆栈。驻留在常规RAM(随机访问存储器)区域,通过“堆栈指针”可以改变大小。堆栈指针向下移动,会创建新的内存空间;向上移动,则释放内存空间。创建程序时,Java编译器必须准确地知道堆栈内保存的所有数据的“长度”和“存在的时间”,编译器由此生成相应的代码,以便移动指针。Java对象的句柄保存在其中,但是Java对象并不保存在堆栈中。

3.堆。常规用途的内存池,其中保存了Java对象。编译器不知道也不需要知道从“内存堆”或“堆”里分配多少存储空间、数据存留多长时间。

4.静态存储。静态指位于固定的位置(在RAM中)。程序运行期间,静态存储的数据将随时供调用。通过static关键字指出一个对象的特定元素是静态的。Java本身本不可能置于静态存储空间。

5.常数存储。常数值通常置于程序代码内部,永远不会改变。

6.非RAM存储。若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之内。例如,流式对象和固定对象。

二、对象

对象的三个主要特性:

•对象的行为——可以对对象施加哪些操作,或可以对对象施加哪些方法?

•对象的状态——当时加那些方法时,对象如何响应?

•对象标识——如何辨别具有相同行为与状态的不同对象?

对象的行为是由可调用的方法定义的。每个对象都保存着描述当前特征的信息,这就是对象的状态。对象的状态不会自发改变。一个设计良好的类,它的对象只能通过调用方法实现,如果不经过方法调用就可以改变对象的状态,说明封装性受到了破坏。

封装:将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方法。封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域。程序仅通过对象的方法域对象数据进行交互。

对象中的数据称为实例域(instance field)或属性。操纵数据的过程称为方法(method)。对于每个特定的对象都有一组特定的实例域值(属性值),这些值的集合就是该对象的当前状态。

类之间的关系

类之间常见的关系:

•依赖(“use-a”): 一个类的方法操纵另一个类的对象。

•聚合(“has-a”): 一个类的对象包含另一个类的对象。

•继承(“is-a”): 用于表示特殊与一般的关系。如果类A扩展类B(A继承B),类A不但包含类B的方法,还有扩展的方法。

一个对象并没有实际包含一个对象,而仅仅引用一个对象。

在Java中,任何对象变量的值都是都是对存储在另外一个地方的一个对象的引用。new操作符的返回值也是一个引用。

以上这篇全面理解Java类和对象就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHP中文网。

更多全面理解Java类和对象相关文章请关注PHP中文网!

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

705

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

233

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

117

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

22

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

61

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

30

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

15

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

669

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

58

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.4万人学习

MongoDB 教程
MongoDB 教程

共17课时 | 2.9万人学习

C# 教程
C# 教程

共94课时 | 9.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号