javaSE_Day_008
2021/7/31 11:08:47
本文主要是介绍javaSE_Day_008,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
7. 类的复合
在开发中会遇到需要在一个类中使用另一个类所定义的属性和方法,完成当前类中的逻辑执行,这种情况下我们就需要使用类的符合操作。
7.1 第一种
(1)说明:在一个类中,将另一个类的对象,作为本类中某个方法的实用参数。
- 这个类有两种存在行为:
- 一种是定义在参数列表中。
- 一种是在方法内部以局部变量形式存在。
- 好处:在什么地方使用就在什么地方创建,并不需要遵守客观现实规律。
- 坏处:作用域小仅限在方法内有效。
7.2 第二种
(1)说明:在一个类中,将另外一个类的对象,作为本类中的属性。
- 这种方式定义就是将一个类作为另外一个类属性存在,但是需要遵守客观现实规律。
- 好处:因为是属性,所以作用域非常大(类内类外都可以使用)。
- 坏处:需要遵守客观现实规律,不能因为某个操作而违背这个规律。
8. 程序中包的概念
(1)说明:通过在src下创建包来进行类的分类管理,将相同概念的类放置在一个包中,这样一来外界需要查询某个类的时候只需要在这个报下查看即可。
- 在开发中我们通过包对类进行分类,再根据对包进行分类从而实现项目的分层(分模块)。
- 创建类的时候是不允许重名的,对于名字相同的类可以通过分包进行存储。
(2)包的命名规则:
- 创建包名不允许使用
java
开头,因为Java具有安全检查机制(JavaAPI中使用java
开头)。 - 包需要域名倒写。
- 例如:www.baidu.com → com.baidu.
- 如果公司域名是数字(包名不允许以数字开头),在数字之前添加下划线
_
即可。 - 包名要求全小写,不要使用Java中的关键字作为包名,如果一定要使用关键字,建议关键字第一个字母大写用于区分。
9. 面向对象的三大特征:封装
(1)说明:封装就是将外界不需要的信息进行隐藏,尽可能隐藏对象功能的实现细节,通过向外界直接提供方法来保证外界无法破坏原有内部的信息。
9.1 Getter和Setter方法的实现
9.1.1 Getter方法的实现
(1)说明:Getter方法起到的作用就是获取属性值。
- 属性被private(私有的)修饰后需要对其进行访问,要提供Getter方法。
(2)格式:
public 返回值类型 getXXX(){ return 获取属性; }
- 访问权限修饰符固定为public。
- 没有static进行修饰,但是必须由返回值类型。
- 获取属性值的返回类型要与属性数据类型一致。
- 方法名为get+要获取的数据类型名称。
- Getter方法没有参数列表,因为获取数据不需要传递参数。
- 在方法体中必须有return关键字。
- Getter方法中可以做一些计算,但本质上最简单的方式就是直接返回获取的属性值。
9.1.2 Setter方法的实现
(1)说明:Setter方法起到的作用就是对属性方法进行赋值。
- 属性被private(私有的)修饰后需要对其进行赋值,要提供Setter方法。
(2)格式:
public 返回值类型 setXXX(){ return 获取属性; }
- 访问权限修饰符固定位public。
- 没有static进行修饰,也没有返回值类型。
- 方法名为set+要赋值的数据类型名称。
- Setter方法有参数类表,因为要对属性进行赋值。
- Setter方法不需要return关键字。
- Setter方法体中主要实现的就是实用参数对属性进行赋值,可以额外的添加一些逻辑判断或计算来进行赋值。
9.1.3 总结
(1)说明:在使用了Getter和Setter方法之后,就满足了封装条件,可以保证外界无法直接访问属性,并且提供了对外暴露访问的方法。
10 this关键字
(1)说明:this关键字只能使用在本类(当前类)中代表当前对象。
- this关键字使用在什么位置,被谁触发,谁就是this指代的当前对象。
- 在现在的Java开发中,基本上不再使用this关键进行一些操作,现在this关键字在开发中最大的作用就是用来区分属性名和参数名。
(2)this关键字的一些操作:
- 通过this关键字,在当前类中使用
this.成员变量
的方式调用属性,进行取值或赋值。 - 通过this关键字,在当前类中使用
this.成员方法
的方式调用方法,进行方法的执行。 - 通过this关键字,在当前类中使用
this()
在构造方法中调用本类中的构造方法。 - 通过this关键字,可以在当前类中方法内部当做是本类对象进行方法参数传递。
(3)总结:this关键在最大的作用就是用来区分属性名和参数名,剩余的this关键字操作了解即可。
11 static关键字
(1)说明:static关键字的作用是修饰变量和方法,将变量和方法变成静态属性。在类中所有对象的属性都是独立的,但是在某些情况下需要所有对象共享一个变量,使用static修饰变量后,这个变量就可以让所有对象共享。
- static修饰属性和方法之后,这个属性和方法被称为类的属性和方法,因为这个属性输入某一个对象,而是所有对象都具备,相当于类中的。
(2)static关键字修饰了变量和方法之后其具备以下特点:
- 随着类的加载而加载。
- 当类加载器把字节码文件(.class)加载到JVM中的时候,static修饰的变量和方法就已经存在内存中了。
- 优先级高于对象。
- 对象是通过new关键字创建出来的,而static修饰的变量和方法在类加载的时候就进行加载,所以static修饰的变量和方法优先级高于对象,所以成员变量和成员方法无法直接在静态方法中进行调用(这个时候对象还没有创建成员变量和成员方法)。
- static修饰成员变量之后,这个变量会变成静态变量,静态变量是所有对象共享的。
- static修饰的变量和方法被称之为类变量和类方法,所以正确调用static修饰的变量和方法的语法为:
- 如果实在同一个类中调用本类定义的静态变量或方法,可以省略类的名字,直接进行调用;如果不在同一个类进行调用,则必须书写类的名字用来表示静态变量和静态方法出自哪一个类。
类名.静态变量名:进行取值和赋值操作。 类名.静态方法名:进行静态方法的调用。
12 代码块
(1)说明:代码块就是使用{}
括起来的一段代码。
12.1 局部代码块
(1)说明:直接定义在方法体内部的代码块。
public class LocalBlock { public static void main(String[] args) { int b = 20; { //局部代码块 int a = 17; //局部代码块内部的局部变量 System.out.println(a); //访问局部代码块外部的变量 System.out.println(b); } //不能访问局部代码块中a变量 // System.out.println(a); } }
12.2 初始化代码块(构造代码块)
(1)说明:初始化代码块直接定义在类中,每次创建对象的时候都会执行这个代码块,这个代码块的执行优先级高于构造方法。
public class LocalBlock { public static void main(String[] args) { int b = 20; { //局部代码块 //在外界操作这个代码块中都可以 int a = 17; //局部代码块内部的局部变量 System.out.println(a); //访问局部代码块外部的变量 System.out.println(b); } //不能访问局部代码块中a变量 // System.out.println(a); } }
12.3 静态代码块
(1)说明:静态代码块就是在初始化代码块前面添加static进行修饰。静态代码块会随着类的加载而加载并且只会加载一次。
- 静态代码块多用于资源加载方向,例如读取properties资源文件数据、加载JDBC连接驱动。
public class StaticBlock { public StaticBlock(){ System.out.println("无参构造方法"); } static{ System.out.println("静态代码块"); } { System.out.println("初始化代码块"); } public static void main(String[] args) { new StaticBlock(); } }
14 工具类
(1)说明:在一个项目中会有一些通用的逻辑被抽取封装成方法,随着这类方法的增对,为了更好的进行的管理和利用,可以提供一个类来专门存储这些通用方法,这个类就叫做工具类。
- 定义在工具类中的方法要求:方法必须是静态方法,变量需要是静态变量。
- 常用的工具类:Arrays数组工具类、Math数学工具类。
(2)自定义工具类的要求:
- 类的名字必须是:xxxUtil或xxxUtils或xxxTools。
- 工具类中不允许创建对象,建议工具类中的构造方法私有化。
- 工具类中所有的属性和方法都是静态的。
- 工具类中不允许有main方法。
这篇关于javaSE_Day_008的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?
- 2025-01-10实现精准执行:团队协作新方法
- 2025-01-10如何使用工具提升活动策划团队的工作效率?几个必备工具推荐
- 2025-01-10WiX 标签使用介绍:打造专业安装程序的利器