java 访问修饰符
此题考察修饰符,函数定义等,故从网上搜罗了下相关资料,总结如下:
|
修饰符 |
类 |
成员访求 |
构造方法 |
成员变量 |
局部变量 |
|
|
abstract(抽象的) |
√ |
√ |
- |
- |
- |
|
|
static (静态的) |
- |
√ |
- |
√ |
- |
|
|
public(公共的) |
√ |
√ |
√ |
√ |
- |
|
|
protected(受保护的) |
√ |
√ |
√ |
- |
||
|
private(私有的) |
- |
√ |
√ |
√ |
- |
|
|
synchronized(同步的) |
- |
√ |
- |
- |
- |
|
|
native(本地的) |
- |
√ |
- |
- |
- |
|
|
transient(暂时的) |
- |
- |
- |
√ |
- |
|
|
volatie(易失的) |
- |
- |
- |
√ |
- |
|
|
final(不要改变的) |
√ |
√ |
- |
√ |
√ |
|
|
类 修饰符 |
|
|
Public |
可以从其他类中访问 |
|
Abstract |
本类不能被实例化 |
|
Final |
不能再声明子类 |
|
构造函数修饰符 |
|
|
Public |
可以从所有的类中访问 |
|
Protected |
只能从自己的类和它的子类中访问 |
|
Private |
只能在本类中访问 |
|
域/成员变量修饰符 |
|
|
Public |
可以从所有的类中访问 |
|
Protected |
只能从本类和它的子类中访问 |
|
Private |
只能从本类中访问它 |
|
Static |
对该类的所有实例只能有一个域值存在 |
|
transient |
不是一个对象持久状态的一部份 |
|
Volatile |
可以被异步的线程所修改 |
|
final |
必须对它赋予初值并且不能修改它 |
|
局部变量 修饰符 |
|
|
final |
必须对它赋予初值并且不能修改它 |
|
方法修饰符 |
|
|
Public |
可以从所有的类中访问它 |
|
Protected |
只能从本类及其子类中访问它 |
|
Private |
只能从本类中访问它 |
|
abstract |
没有方法体,属于一个抽象类 |
|
final |
子类不能覆盖它 |
|
static |
被绑定于类本身而不是类的实例 |
|
native |
该方法由其他编程语言实现 |
|
asnchronized |
在一个线程调用它之前必须先给它加 |
类的修饰符整合
一.类
类的修饰符:
Public:可以在其他任何类中使用,默认为统一包下的任意类。
Abstract:抽象类,不能被实例化,可以包含抽象方法,抽象方法没有被实现,无具体功能,只能衍生子类。
Final:不能被继承。
二.变量
变量修饰符:
一个类的成员变量的声明必须在类体中,而不能在方法中,方法中声明的是局部变量。
1. 可访问修饰符:
2. static:类变量:一个类所拥有的变量,不是类的每个实例有的变量。类变量是指不管类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量,因此可以通过类本身或者某个对象来访问类变量。
3. final:常量。
4. volatile:声明一个可能同时被并存运行的几个线程所控制和修改的变量。
实例变量:和类变量对应,即每个对象都拥有各自独立的实例变量。
三.方法:(和变量对象分为实例方法和类方法,并用有无static修饰区别)
类方法:使用static关键字说明的方法
1.第一次调用含类方法的类是,系统只为该类创建一个版本,这个版本被该类和该类的所有实例共享。
2.类方法只能操作类变量,不能访问实例变量。类方法可以在类中被调用,不必创建实例来调用,当然也可以通过对象来调用。
实例方法:实例方法可以对当前对象的实例变量操作,而且可以访问类变量。
方法可以重载,要求:方法名相同,但是参数必须有区别。(参数不同可以使类型不同,顺序不同,个数不同)
方法的返回类型:若无返回类型,则声明为void.
方法中的变量作用域:
1. 成员变量:整个类。
2. 局部变量:定义起到方法块结束为止。
3. 方法参数:整个方法或者构造方法。
4. 异常处理参数:参数传递给异常处理方法。
构造方法:和类同名的方法。为新建对象开辟内存空间后,用于初始化新建的对象。不能用对象显式的调用。
静态初始化器:格式:static{<赋值语句组>}
静态初始化器与构造方法的区别:
|
静态初始化器 |
构造方法 |
|
对类的静态域初始化 |
对新建的对象初始化 |
|
类进入内存后,系统调用执行 |
执行new后自动执行 |
|
属特殊语句(仅执行一次) |
属特殊方法 |
方法的修饰符:
抽象方法:用abstract修饰,只有声明部分,方法体为空,具体在子类中完成。
类方法:静态方法,用static修饰,
1. 调用时,使用类名作为前缀,而不是类的某个实例对象名
2. 不能被单独对象拥有,属于整个类共享。
3. 不能处理成员变量。
最终方法:用final修饰,不能被子类重新定义的方法。
本地方法:用native修饰的方法,表示用其他语言书写的特殊方法,包括C,C++,FORTRAN,汇编语言等。
四.类成员的访问控制符:
即类的方法和成员变量的访问控制符,一个类作为整体对象不可见,并不代表他的所有域和方法也对程序其他部分不可见,需要有他们的访问修饰符判断。
权限如下:
|
访问修饰符 |
同一个类 |
同包 |
不同包,子类 |
不同包,非子类 |
|
private |
√ |
|||
|
protected |
√ |
√ |
√ |
|
|
public |
√ |
√ |
√ |
√ |
|
默认 |
√ |
√ |
java 访问修饰符的更多相关文章
- java访问修饰符
了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变 ...
- C#和JAVA 访问修饰符
JAVA ----------------------------------------------- 访问修饰符 描述 ------------------------------- ...
- 详解java访问修饰符
详解java访问修饰符 为了防止初学者看到因为专业的术语而感觉晦涩难懂,我接下来尽量用生动比喻的说法来解释!首先第一点,我们来讲讲什么叫修饰符!看看这个名称,想想他的意思.修饰符!修饰符!,就是用来修 ...
- Java访问修饰符及其访问控制
java中的访问修饰符,可以看成是人的秘密分享级别.private 个人秘密 ,protected 家族秘密,default(不写修饰符)社区(邻居)秘密(在一个包下的能访问),public 社会秘密 ...
- Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- C#和Java访问修饰符的比较
访问修饰符对于C#:类 的默认修饰符是 internal(外部类只能被public / internal 修饰)枚举 的默认修饰符是 public 且此类型不允许其它访问修饰符接口 的默认修饰符是 i ...
- Java 访问修饰符总结
Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口. Java语言采用访问控制修饰符来封装类及类的方法和属性的访问权限,从而向使用者暴露接口.隐藏细节. Java访问控制分为 ...
- Java 访问修饰符详解
访问修饰符定义了类.属性和方法的访问权限,Java 中包含四种,访问权限从小到大为 private.default.protected 和 public. public,公共修饰符,被其修饰的类.属性 ...
- 《Java基础知识》Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- Java访问修饰符和三大特征(封装,继承和多态)
一.访问修饰符基本介绍: java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围): 1.公开级别:用public修饰,对外公开2.受保护级别:用protected修饰,对子 ...
随机推荐
- 第二百零一天 how can I坚持
sql要学的东西还很多,很简单的一个sql都不会写,还得请教别人,哎. 八千代.铜钱草,小叶元宝,绿萝.还有我的鱼,还有罗娜. 今天试用了一下三星,系统优化就是不行啊,掉电太快,想搞个小米5,还想买个 ...
- C++11之sizeof
[C++11之sizeof] 在标准C++,sizeof可以作用在对象以及类别上.但是不能够做以下的事: 这会传回OtherType的大小.C++03并不允许这样做,所以会引发编译错误.C++11将会 ...
- 如何在Centos上安装python3.4
Centos上面默认的Python版本是2.6,本文介绍如何安装3.4版本. 0.下载前准备 需要安装以下库,不然会有问题. yum -y install zlib-devel bzip2-devel ...
- mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目 ...
- 在ASP.NET MVC中验证checkbox 必须选中 (Validation of required checkbox in Asp.Net MVC)
转载自 http://blog.degree.no/2012/03/validation-of-required-checkbox-in-asp-net-mvc/ Why would you want ...
- Codeforces 100548F - Color (组合数+容斥)
题目链接:http://codeforces.com/gym/100548/attachments 有n个物品 m种颜色,要求你只用k种颜色,且相邻物品的颜色不能相同,问你有多少种方案. 从m种颜色选 ...
- shutdown 和closesocket
来,咱们彻底的来讨论一下这个shutdown 和closesocket 从 函数调用上来分析(msdn):一旦完成了套接字的连接,应当将套接字关闭,并且释放其套接字句柄所占用的所有资源.真正释放一 ...
- 解决数据库datatime数据在DataGridView里不显示秒的解决
在数据库中正确显示有分有秒,到dataset里的时候也有,但绑定到DataGridView里的时候就没有秒,解决办法: dataGridView1.Columns["record_time& ...
- sql 自连接
这是一个部门表,里面存放了部门及其上级部门,但都放在同一张表中,我们假设现在需要用SQL查询出各部门及其上级部门!就如何做,当然,不用自连接也一样,可以如下: 我们达到预期目的!在这个查询中使用了一个 ...
- (剑指Offer)面试题15:链表中倒数第k个结点
题目: 输入一个链表,输出该链表中倒数第k个结点. 例如:链表中有6个结点,从头到尾依次为1,2,3,4,5,6,则该链表的倒数第3个结点为4. 链表结点定义: struct ListNode{ in ...