Day05:访问控制 、 static和final
访问控制
package(包)
什么是包?
组织java文件的一个单位
为什么需要包?
将相关的java文件组织在一个包里
将项目中同名的类,方法在不同包中,不会冲突
注意:
包名全部小写,如果多个单次组成使用.分隔
一个类的类名实际上是由包名做前缀的,这样的类名称之为全类名
java中不允许全类名相同的类
如过想写一个全世界唯一的全类名怎么办?
当今业界使用“域名反写”未确保唯一
import关键字
什么是import关键字?
导入不同包的其他类
为什么需要import关键字?
使用import可以避免使用一个不同包其他类时,使用全包名
使用import
包名.类名
//导入一个其他包中的类
包名.*
//导入这个包中的全部类
注意:
不能在同一个类中导入2个同名类
不能在类中导入和自己同名的类
导入单个类名的优先级比导入*号的优先级高
JVM运行时,默认导入java.lang.*;
访问修饰符
什么是访问修饰符?
能够设置类中的一个成员对外部访问权限的一组关键字
为什么需要访问修饰符?
为了保存一些重要的信息或数据,不被随意访问和篡改。
将那些比较私密的信息,用严格的访问修饰符保护
访问修饰符的分类
private(私有)
默认 (什么都不写)
protected(保护)
public (公有)
访问修饰符访问权限
本类 同包 子类 其他
public 可以 可以 可以 可以
protected 可以 可以 可以
默认 可以 可以
private 可以
static关键字
static只能修饰成员英文含义静态
修饰属性
被static修饰的属性所有对象共享同一个值
被static修饰的属性值会被保存在内存的方法区中
当该类的所有对象共享一个资源时,将这个资源设置为静态能够节省内存
静态属性使用类名调用
静态属性也称为类属性
修饰方法
被static修饰的方法称之为静态方法,类方法
静态方法可以直接使用类名调用无需实例化对象
静态方法中无法调用普通(实例)属性和方法,因为静态方法中没有this
如果一个不需要访问当前类中的实例成员就可以定义称静态的
静态方法不能被重写
修饰初始化块
什么是初始化块
在代码中直接编写{},{}中的内容就是初始化块
初始化块中的内容会在构造方法运行前运行
被static修饰的初始化块只会运行一次
运行时机是JVM使用这个类之前,JVM加载类时运行静态块
加载类的情况
实例化对象
使用类名调用静态成员
反射
final关键字
final:(最终)是一个修饰u符。
1.final可以修饰类,函数,变量(成员变量,局部变量)。
2.被final修饰后的类不可以被其他类继承。
3.被final修饰后的函数不可以被重写。
3.被final修饰后的变量不允许被再次赋值。
final在对变量进行修饰时一定赋值,被final修饰后的变量我们称为变量。
注意:
常量的命名规范;
都要大写,如果这个名字是由多个单词组成的,在单词之间用下划线隔开。
修饰类:
表示这个类不能被继承
修饰方法
表示这个方法不允许被子类重写
修饰成员变量(属性)
属性值不能被修改
赋值时:
要么声明时赋值
要么构造方法中赋值
修饰局部变量
修饰方法中声明的变量只能被赋值一次
修饰方法的形式参数不能修改
匿名对象与类
匿名对象:
没有名字的对象。
匿名对象的使用方式:
1.当对象的方法只调用一次时,我们可匿名对象来完成。
2.匿名对象可以被当作实参传递。
语法:
类名 (new 对象名());
//相等于
类名 a=new 对象名();
a.方法名();
匿名类:
没有名字的内部类。
语法:
new <接口或类>(){
//类的主体
}
匿名类的使用方式:
1.继承一个类,重写其方法。
2.实现一个接口(可以是多个),实现其方法。
特点:
匿名类可以访问外部类的所有成员。
匿名类中允许使用非静态代码块。
匿名类的非静态代码块会在父类的构造方法之后执行
Day05:访问控制 、 static和final的更多相关文章
- Unit04 - 继承的意义(下) 、 访问控制 、 static和final
Unit04 - 继承的意义(下) . 访问控制 . static和final 1.方法的重写(Override):重新写.覆盖 1)发生在父子类中,方法名称相同,参数列表相同,方法体不同 2 ...
- Java学习日记-5 关键字static和final 以及接口
乱入:表达式中的自动类型转换 char,short,byte都升级为int类型进行运算,结果为int,但其原变量类型并不改变. 所以,byte b = 10; b = b*b; 编译时会报错.但是写 ...
- JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配
Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和mu ...
- java笔记——Java关键字static、final使用小结
static 1. static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的 ...
- java中static 和 final 的一些使用规则
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
- java里的static和final
本节介绍JAVA里static和final的作用和使用方法以及一些需要注意的问题. 一.static static表示"全局"或"静态",用来修饰成员变量和成员 ...
- Android中static和final用法小结
Java关键字static.final使用小结 static 1. static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是 ...
- php中$this、static、final、const、self 等几个关键字的用法
<?phpclass A { public static function get_self(){ return new self(); } public static function get ...
- Java中static、final用法小结
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
随机推荐
- SpringBoot 出现内置的Tomcat没有启动的情况
Tomcat未启动,也未报错 pom.xml文件中增加 <dependency> <groupId>org.springframework.cloud</groupId& ...
- phpMyAdmin无法缓存模板文件,所以会运行缓慢。
出现这个的原因是 phpmyadmin的安装目录, tmp目录不存在,或者存在但是权限不对.这是个缓存目录,可以加快phpmyadmin的运行,即使不理睬这个警告信息,也不会影响程序的执行. 解决的方 ...
- Python 模块 Ⅱ
搜索路径 当你导入一个模块,Python 解析器对模块位置的搜索顺序是: 1.当前目录 2.如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录. 3.如果都 ...
- HTML新手入门(1)
HTML新手入门(1) ——编译器下载及基础框架 一.编译器下载 作为新手,听取大佬的建议,用HBuilder进行编译. 下载地址:www.dcloud.io/ 进入到首页左上角有一个如下图标. (这 ...
- linux7buffer和cache
现象:作为hdfs集群的主节点,越来越卡 排查:CPU,mem CPU正常,检查内存情况,发现如下 如上截图:发现程序可用内存为91G,但是部分swap分区被占用.于是引出如下思考,free -h这条 ...
- Codeforces 1213D Equalizing by Division
cf题面 中文题意 给n个数,每次可以把其中一个数字位运算右移一位(即整除以二),问要至少操作几次才能让这n个数中有至少k个相等. 解题思路 这题还有个数据范围更小的简单版本,n和k是50,\(a_i ...
- 在vue项目中添加一个html页面,开启本地服务器
在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...
- 使用VSCODE开发UE4
完全可行,速度很快,智能提示.代码格式化.查找Symbol等等都不比VS+Visual AssistX 差. 准备 打开编辑器的Editor Preferences>Source Code,选择 ...
- JQuery实现表格动态增加行并对新行添加事件
实现功能: 通常在编辑表格时表格的行数是不确定的,如果一次增加太多行可能导致页面内容太多,反应变慢:通过此程序实现表格动态增加行,一直保持最下面有多个空白行. 效果: 一:原始页面 二:表1增加新行并 ...
- java 基础类型和包装类的详解
摘自:JAVA中基本类型的包装类 1. 包装类把基本类型数据转换为对象 每个基本类型在java.lang包中都有一个相应的包装类 2. 包装类有何作用 提供了一系列实用的方法 ...