Java中类和对象(完):封装和静态成员变量
由于类和对象的内容较多,且都是一些概念和知识点,这篇文章会继续深入来讲,上节课传送门:
https://blog.csdn.net/nsjqj/article/details/150004383?fromshare=blogdetail&sharetype=blogdetail&sharerId=150004383&sharerefer=PC&sharesource=nsjqj&sharefrom=from_link
封装
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
public是公开,别的方法是会有访问权限的;private 是私人,只在类中、主方法外边才会有访问权限。
包
以下是在IDEA(jdk-17下)创建过程:
注意:package 里的语句是倒着写的!
在Java中,声明类时指定其所在的包(Package)主要有什么作用呢?
1. 避免类名冲突
Java中允许不同包存在同名的类,通过包名可以唯一区分它们。例如, java.util.Date (工具类)和 java.sql.Date (数据库日期类)同名,但因包不同而不会冲突。
2. 实现代码的逻辑组织
包可以按功能、模块或业务逻辑对类进行分组,类似文件夹对文件的管理。,提高代码可读性和维护性。
3. 控制访问权限
Java的访问修饰符(如 default 权限)与包相关:被 default 修饰的类、方法、变量,仅能被同一包内的其他类访问,实现了包级别的访问控制。
4. 便于大型项目协作
在多人协作的项目中,通过包结构(如按团队、模块划分)可以明确代码归属,避免开发冲突,规范代码组织方式。
静态成员变量(static)
先来看几张图,了解一下概念。
总结:
接下来,举例一个程序:
直接在 System.out.println 后加上了className这个小驼峰命名的类变量(静态成员变量),就能直接调用。如图
r
使用时可能会报错的注意事项!!!:+
像我们之前在最开始的时候用的方法,当时只说了固定语法,并没有说明其中的含义,方法就是也用了 static 才不会出现报错,静态方法才可以引用静态方法。
总结:
关于静态成员变量的初始化,有以下几种初始化方式:
其中,就地初始化是指直接在static中进行赋值来初始化;
这是通过get set 方法进行初始化。
关于代码块初始化,这是一个全新的概念,接下来用一张图会着重去讲:
相信看了图就能够很好的理解了。
toString构造方法
在编写程序的时候,如果你没有自己调用toString方法,编译器会按照如下图左边的源代码默认给出一个toString方法,此时如果输出编译器给出的结果会是地址;但是如果自己事先编译出来了,那就会优先调用自己的。
例题
接下来是一些例题,希望大家能去做:
问:最后得到的count 值是多少?
答:如下图所示
答案:C;import 语句不能导入指定的包。
答案:B;D虽然没有仔细去讲,但它也是属于这一类;而 this 则是引用类型的。
答案:B。A选项是普通方法调用时的用法,C选项后面章节会讲。
答案:count = 88;易错点:很多人会以为成员变量里面用了 private ,其实不然,private 是只能在类里面才能被调用,这道题把main程序放在了类里面,所以也可以被调用。
答案:B。两个都是static说明可以被调用,然而并没有加上public 或 private,即boolean默认值是false。
答案:D。
t.f = 3.0后没加上f或F,则默认是double,与上图的float不一致,A选项错误;
n被static 所修饰,不能用this,B选项错误;
m是被int修饰,int不属于类变量,不能用Test引用,C选项错误。
答:静态代码块先执行,所以是先执行cnt += 9,再执行cnt /= 3。即 9+6 = 15,15 / 3 = 5;答案选A。
答案:aaabbb。
以上就是本篇文章的全部内容。如有遗漏或错误,欢迎补充。
本篇文章的截图和课件均摘自 比特科技 。