热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java对象的三大要素_java面向对象(一)

一、Java面向对象学习的三条主线:1.Java类及类的成员:属性、方法、构造器;代码块、内部类2.面向对象的三大特征:封装

一、Java面向对象学习的三条主线:

1.Java类及类的成员:属性、方法、构造器;代码块、内部类

2.面向对象的三大特征:封装性、继承性、多态性。(抽象性)

3.其他关键字:this、super、static、final、abstract、interface、package、import等。

二、“人把大象装进冰箱”

1.面向过程:强调的时功能行为,以函数为最小单位,考虑怎么做。

2.面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

三、面向对象的两个要素:

类:对一类事物的描述,是抽象的、概念上的定义

对象:是实际存在的该类事物的每个个体,因而也称为实例(interface)

二者关系:对象,是由类new出来的,派生出来的。

面向对象程序设计的重点是类的设计

设计类,就是设计类的成员。

属性 = 成员变量 = field = 域、字段

方法= 成员方法 = 函数 = method

创建类的对象 = 类的实例化 = 实例化类

四、面向对象思想落地的实现

1.创建类,设计类的成员

2.创建类的对象

3.通过“对象.属性”或“对象.方法”调用对象结构

13ebb253dfbc9511f021f50b6d5b220a.png

属性(成员变量) vs 局部变量

1.相同点:

定义变量的格式:数据类型 变量名 = 变量值

先声明,后使用

变量都有其对应的作用域

2.不同点:

在类中声明的位置不同

属性:直接定义在类的一对{}内

局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量

关于权限的修饰符不同

属性:可以在声明属性时,指明其权限,使用权限修饰符(private、public、缺省、protect等)

局部变量:不可以使用权限修饰符

默认初始化值的不同

属性:类的属性,根据其类型,都有默认初始化值。

整型(byte、short、int、long):0

浮点型(float、double):0.0

字符型(char):0(\u0000)

布尔型(boolean):false

引用数据类型(类、数组、接口):null

局部变量:没有默认初始化值,意味着我们在调用局部变量之前,一定要显示赋值。

特别的:形参在调用时,我们赋值即可。

在内存加载的位置不同

属性:加载到堆空间中(非static)

局部变量:加载到栈空间中

五、类中方法的声明和使用。

方法:描述类应该具有的功能

举个栗子

bec638b387249d2f11e323eca1c9e8e2.png

返回值类型:

如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时方法中,需要使用return关键字来返回指定类型的变量或常量:“return 数据”

如果方法没有返回值,则声明方法时,使用void来表示。通常,没有返回值的方法中,就不使用return。但是如果使用的话,只能“return;” 表示结束此方法的意思

形参列表:方法可以声明0个,1个,或多个形参。

格式:数据类型1 形参1,数据类型2 形参2,...

六、理解万事万物皆对象

1.在Java语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构

Scanner,string等

文件:File

网络资源:URL

2.涉及到Java语言与前端Html、后端的数据库交互时,前后端的结构在Java层面交互时,都体现为类、对象

七、内存解析的说明

引用类型的变量,只能储存两类值:null 或 地址值(含变量的类型)

八、匿名对象的使用

1.理解:我们创建的对象,没有显式的赋给一个变量名。即为匿名对象

2.特征:匿名对象只能调用一次

76138d02da558dd67345eda896fbeb1f.png

九、方法的重载

1.定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。

2.如:Arrays类中重载的sort()/binarySearch()

方法名:---> 重载列表

bc3a684e845c04f72440ba9bfbbb5eb9.png

3.可变个数形参的方法

1.jdk 5.0新增的内容

2.具体使用:

可变个数形参的格式:数据类型 ... 变量名

当调用可变个数形参的方法时,传入的参数可以是0个到多个。

当可变个数形参的方式与本类中的方法名相同,形参不同的方法之间构成重载

当可变个数形参的方式与本类中的方法名相同,形参类型也相同的数组不能构成重载,二者不共存

可变个数形参在方法的形参中,必须声明在末尾,最多只能声明一个可变形参。

十、方法参数的值传递机制

关于变量的赋值:

如果变量是基本数据类型,此时赋值的是变量所保存的数据值。

如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。

方法的形参的传递机制:值传递

形参:方法定义时,声明的小括号内的参数

实参:方法调用时,实际传递给形参的数据

值传递机制:

如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。

如果参数是引用数据类型,此时实参赋给形参的是实参真实存储的数据的地址值。

十一、递归方法

递归方法:一个方法体内调用它自身

方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无需循环控制。

public int getSum(int n) { //计算1-n之间所有自然数的乘积

if (n == 1) {

return 1;

} else {

return n * getSum(n - 1);

}

}



推荐阅读
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
author-avatar
平凡无间2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有