最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

java 系列教程:(6)对象和类

[复制链接]
跳转到指定楼层
楼主
发表于 2018-1-22 15:48:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1 面向对象思想#
1.1 面向过程与面向对象
面向过程:procedure oriented programming POP
面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可,这强调的是过程动作。

file

面向对象:object oriented programming OOP
面向对象是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。对象由静态的属性(对象有什么)和动态的行为(对象能干什么)组成。
在面向对象的视角下,我们认为世界是由对象和对象之间的关系组成的,而世界上的所有东西都是对象。
例如 :人把大象装冰箱例子

file

面向对象相对面向过程的优点
1) 结构清晰。使人们的编程与实际的世界更加接近,所有的对象被赋予属性和方法,结果编程就更加富有人性化。
2) 封装性。减小外部对内部的影响。封装将对象有关的数据和行为封装成整体来处理,使得对象以外的部分不能随意存取对象的内部属性,从而有效地避免了外部错误对它的影响,大大减小了查错和排错的难度。
3) 容易扩展,代码重用率高。容易扩展,在大框架不变的情况下很容易就开发出适合自己的功能,实现简单,可有效地减少程序的维护工作量,软件开发效率高。

思维转变
万事万物皆对象,例如汽车、台灯、电脑、书本、教师,这些都是现实生活中的对象
把需求中要解决的问题,根据这个对象有什么属性、有什么行为,将其分解成多个有关联的对象
然后这些对象要学会用领导的思维去做事,而不是具体过程中的执行者
找到具有功能的对象,去实现需求
例如:
面向过程:吃.(猪八戒,西瓜); 面向对象:猪八戒.吃(西瓜);

2 类与对象#
对象概念:
一切客观存在的事物都能称之为对象。
对象都具有两个主要的要素:
“对象有什么”以及“对象能干什么”。其中,对象“有什么”称之为对象的属性;而对象“能干什么”称之为对象的方法。例如,对于一个汽车对象,这个对象有颜色、品牌、价格、最高时速等属性,有启动、加速、 转向、 刹车等方法。
对象和对象之间会通过某种方式产生联系

file

2.1 类与对象的关系
对象是客观的具体事物。对象有两个主要元素:属性和方法,其中属性表示对象“有什么”,方法表示对象“能干什么”。
“类”是对一“类”事物的总结,可以把类理解为:对大量对象共性的抽象,是对象的模板。

类的具体化就是对象,也可以说类的实例是对象。如有个人这个类,统称人类;对象就是具体的某个人。

类具有属性,它是对象的属性状态的抽象,用数据结构来描述类的属性,人类有姓名、年龄、性别等属性。
类具有操作,它是对象的操作行为的抽象,用操作名和实现该操作的方法来描述,人有吃()、说话()、学习()等方法。

file

面向对象具有各司其职、可重用、可扩展、弱耦合等特性。
2.2 类的定义
2.2.1 定义类
语法格式:
类名首字母大写,剩余单词遵循驼峰规则

file

2.2.2 定义类的属性
2.2.2.1 属性定义
类属性定义语法格式:

file

修饰符:修饰符可以省略,也可以是public、protected、private、static、final,其中public、protected、private三个最多只能出现其中一个,可以与static、final组合起来修饰属性。
示例:

file

2.2.2.2 类属性默认值

file

2.2.3 定义类的方法
2.2.3.1方法的定义
定义方法的语法格式:

file

修饰符:参考属性定义语法里的修饰符
方法返回值类型:返回值类型可以是基本类型也可以是引用类型。
如果声明了方法返回值类型,则方法体内必须有一个有效的return语句,该语句返回一个变量或表达式
如果一个方法没有返回值,则必须使用void来声明没有返回值
形参列表:可有可无。

file

2.2.4 方法参数传递
java里的方法是不能独立存在的,调用方法也必须使用类或 对象作为主调者。
如果声明方法时包含了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传给形参的参数值被称为实参。
方法参数传递规则

在 Java 中的方法参数传递中,基本类型传值,对象类型传地址。

3、对象的创建和使用#
3.1 对象的创建
创建的对象的根本途径是构造器(构造方法)
语法:
使用new + 构造器创建一个新的对象,如:

file

3.2 对象的使用
使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)
访问属性:对象名.属性名
访问方法:对象名.方法名(实参列表)
如果static修饰的方法和属性(静态属性或静态方法),既可通过类来调用,也可通过对象实例来调用,建议通过类来调用。
示例:

file

file

file

3.3 对象的引用

关系通过堆栈的图来解释

file

4 成员变量和局部变量#
4.1 成员变量与局部变量

成员变量:在方法体外,类体内声明的变量
① 成员变量定义在类中,在整个类中都可以被访问
② 成员变量分为类成员变量(static修饰)和实例成员变量(非static修饰),实例变量存在于对象所在的堆内存中
③ 成员变量有默认初始化值
④ 成员变量的权限修饰符可以根据需要,选择任意一个

局部变量:在方法体内部或代码块内部声明的变量
① 局部变量只定义在局部范围内,如:方法内,代码块内等。
② 局部变量存在于栈内存中。作用的范围结束,变量空间会自动释放。
③ 局部变量没有默认初始化值,每次必须显式初始化。
④ 局部变量声明时不指定权限修饰符

file

什么时候用类成员变量(static修饰的成员变量)
当分析对象中所具备的成员变量的值都相同时,这是可以被static修饰为类成员变量。
如果是相同的数据,对象不需要做修改,只需要使用, 不需要存储在对象中,可以被static修饰为类成员变量。
4.2 成员变量的初始化及内存中的运行机制

file

file

5 构造方法#
构造方法(构造器)是比较特殊的方法。相比一般方法,构造方法有如下特点:
 构造方法没有返回值类型。
 构造方法的方法名与类名相同。
 构造方法不能手动调用,只能在对象创建时自动调用一次。
5.1 构造方法定义
构造器定义语法格式:

file

file

file

5.2 对象的创建过程

分配空间
创建一个对象时在内存中为一个对象分配一块数据区域。同时会把对象所有的属性设为默认值。
初始化属性
如果我们在定义实例变量的同时,为实例变量进行了赋值。则赋值语句在这一步骤执行。
调用构造方法
当分配空间和初始化属性完成之后,最后一步是对该对象调用构造方法。
示例:
file

6 this关键字#
6.1 this表示引用
this 关键字表示的是“当前对象的引用”。 那么什么是“当前”对象呢?
所谓当前对象,指的是:对哪个对象调用方法,哪个对象就是当前对象,也就是说,谁调用这个方法,this就代表谁。

示例:

file

file

file

在使用“ this()” 这种语法时,要注意三个要点:
1、只能在构造方法中使用,并且只能调用本类的其他构造方法
2、在使用时, this()必须作为构造方法的第一个语句,否则编译出错
3、this()不能够递归调用

代码示例:

file

file

file

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海牛部落-海牛博士,http://hainiubl.com/topics/151
楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-8 00:10

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表