访问修饰符与可选修饰符static的使用
在Java中修饰符较多,在这里简单说一说几个访问修饰符的选择使用,和可选修饰符static的使用。
一.访问修饰符:这是Java里用来控制访问类及类的方法、变量的访问权限,从而达到只暴露接口,来隐藏内部实现的细节,访问控制符分4种级别(仅仅适用于类及类的成员修饰 private、默认、protected、public),接下来用一个表的形式简要介绍它们的选用:
| 本 类 | 同 包 | 不同包 | |||
| 子 类 | 非 子 类 | 子 类 | 非 子 类 | ||
| private | √ | × | × | × | × |
| 默认 | √ | √ | √ | × | × |
| protected | √ | √ | √ | √ | × |
| public | √ | √ | √ | √ | √ |
说明:在表格当中里面 √ 表示用此修饰符修饰可以被访问的范围;
× 表示用此修饰符修饰不可以被访问到的范围;
二.可选修饰符static的使用:
1.static修饰属性(变量):
| 使用(例:public static String name;) | 不使用(例:public String name;) | |
| 语法上 | 可以用使用对象加点进行访问,但更多的是类名直接访问。 | 该属性必须用对象加点进行访问。 |
| 内存上 | 该属性是没有放在对象上的,而是存在数据段的静态区且全类共享一个。 | 该属性放在每个对象身上的(每个对象有一个自己的name属性) |
| 语法上 | 该属性跟类有关而跟对象无关。 | 该属性是属于某个对象的 |
| 变量产生时间 | 是在加载类的时候。 | 是在new对象的时候产生的 |
| 常量属性 | 不用考虑直接设计为:public static final........; | ----------------------------------------- |
| 属性类型 | 静态属性、类属性 | 普通属性、非静态属性 |
2.static修饰方法:
| 使用 | 不使用 | |
| 语法上 | 虽然可以用对象进行调用,但更多是用类名直接调用 | 必须使用对象进行调用 |
| 操作上 | 静态方法只能操作静态静态属性及其他调用其他静态方法,不能使用this/super | 既可以操作静态属性也可操作非静态属性;既可以操作静态方法也可以操作非静态方法 |
| 加载上 | static方法优先被加载 | 非静态的方法被后加载 |
| 使用上 | 某个方法与对象无关只与类有关,才设计选用static, | 如果某个方法与某个对象有关,就只能设计为非static的 |
| 设计上 | 如果方法是工具类的工具方法应该设计为static, | 如果方法的实现部分需要操作跟对象有关的属性或其他方法,那么该方法就应该设计为非static的 |
3.机制上:static方法优先加载,所以不能操作非静态的内容。
4.static的共性:
①凡是static的都跟对象有关,都类级别的。
②凡是static的在加载期会有特殊处理
③构造方法不能使用static
④static修饰的在加载时产生在数据段的静态区内
访问修饰符与可选修饰符static的使用的更多相关文章
- 【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述
1. 修饰符 public.protected.private.default abstract.static.final. abstract:抽象类.抽象方法 static:静态变量.静态方法.静态 ...
- Java 占位符使用 和 修饰符
Java中占位符的使用 String类的format()方法 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法, ...
- java中的类修饰符、成员变量修饰符、方法修饰符。
类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...
- 学习C#修饰符:类修饰符和成员修饰符
C#修饰符之类修饰符:public.internal. partial.abstract.sealed.static C#修饰符之成员修饰符:public.protected.private.inte ...
- 2016 2 - 23 arc中的所有权修饰符(_strong修饰符与_weak修饰符)
一 _strong修饰符 1._strong修饰符是id类型和对象类型默认的所有权修饰符.如下: id obj = [[NSObject alloc] init];//在没用明确变量所有权修饰符时,会 ...
- 30 面向对象编程 抽象类 abstract 修饰符可以用来修饰方法也可以修饰类
抽象类 概念 abstract 修饰符可以用来修饰方法也可以修饰类, 如果修饰方法,那么该方法就是抽象方法: 如果修饰类,那么该类就是抽象类. 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为 ...
- java中普通的顶级类是不能使用static关键字修饰的。只有内部类可以使用static修饰,也可以不使用staitc关键字修饰。
java中普通的顶级类是不能使用static关键字修饰的.只有内部类可以使用static修饰,也可以不使用staitc关键字修饰. java中的类可以是static吗?答案是可以.在java中我们可以 ...
- (转)USB的描述符及各种描述符之间的依赖关系
全文链接:http://justmei.blog.163.com/blog/static/11609985320102421659260/?latestBlog 1 推荐 [原创] USB入门系列之七 ...
- 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例
[源码下载] 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例 作者:webabcd 介绍背水一战 Windows 10 之 资源 资源限定符概述 资源限定符示例 ...
随机推荐
- Js获取日期时间及其它操作
var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1 ...
- 建立tracert路由列表的方法
建立tracert路由列表的方法:电脑屏幕左下方 选择开始选项运行 输入 CMD在DOS命令行下输入:tracert (你的网站域名) 运行结果中如出现了“* * * req ...
- HDU 5313 Bipartite Graph (二分图着色,dp)
题意: Soda有一个n个点m条边的二分图, 他想要通过加边使得这张图变成一个边数最多的完全二分图. 于是他想要知道他最多能够新加多少条边. 注意重边是不允许的. 思路: 先将二分图着色,将每个连通分 ...
- erlang reduction
“首先明确一点,Erlang的process的调度是抢占式的,而非couroutine的协作式的.其次,Erlang早期版本是只有一个调度器,运行在一个线程上,随着erts的发展,现在erlang的调 ...
- Matlab编程实例(2) 同期平均
%多点同期平均 close all; clear all; pi = 3.14159; Samp2=input('您需要几组信号做同期平均?') Samp1=1000 %设置采样精度 t = lins ...
- NEUOJ711 异星工厂 字典树+贪心
题意:你可以收集两个不相交区间的权值,区间权值是区间异或,问这两个权值和最大是多少 分析:很多有关异或求最大的题都是利用01字典树进行贪心,做这个题的时候我都忘了...最后是看别人代码的时候才想起来这 ...
- hdu1722 bjfu1258 辗转相除法
这题就是个公式,代码极简单.但我想,真正明白这题原理的人并不多.很多人只是随便网上一搜,找到公式a了就行,其实这样对自己几乎没有提高. 鉴于网上关于这题的解题报告中几乎没有讲解原理的,我就多说几句,也 ...
- VC++6.0 MFC播放视频
注:需要在windows xp下才可以使用Windows Media Player插件,在windows 7下面会找不到该插件. 1.Windows Media Player控件的主要方法: 1)Ge ...
- 常见设计模式解析和实现(C++)Adapt模式
作用:将一个类的接口转换成客户希望的另一个接口.Adapt模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. UML示意图 1) 采用继承原有接口类的方式 2)采用组合原有接口类 ...
- SQL入门
# SQL入门 数据库表 一个数据库(database)通常包含一个或多个表(table). 每一个表都有一个名字标识. 表单包含数据的记录(行). 一些重要的SQL命令(常用的吧) 命令 说明 ...