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 |
该方法由其他编程语言实现 |
|
synchronized |
在一个线程调用它之前必须先给它加 |
类的修饰符整合
一.类
类的修饰符:
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 |
√ |
√ |
√ |
√ |
|
默认 |
√ |
√ |
(转自 http://blog.csdn.net/accpzgp/article/details/8584526)
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修饰,对子 ...
随机推荐
- 学习笔记:Vue——插槽
关于Vue插槽,只用过最简单的语法,现在完整地走一遍官方文档说明,并且探索更多用法. 01.如果组件中没有包含一个<slot>元素,则该组件起始标签和结束标签之间的任何内容都会被抛弃. 0 ...
- JS学习笔记 - fgm练习 - 限制输入框的字符类型 正则 和 || 或运算符的运用 i++和++i
<script> window.onload = function(){ var aInp = document.getElementsByTagName('input'); var oS ...
- Javascript和jquery事件--鼠标事件的小结
1.鼠标事件的主要事件应该是mouseup, mousedown, mousewheel, mousemove, mouseover, moveout. <1>其中mouseup和mous ...
- C# 泛型特化
C# 泛型不是 C++ 的模板类,并不支持特化和偏特化,但是使用一些技巧可以在一定程度上达到相同的目的. 原文是 po 在 stackoverflow 上的一个回答:A: Generic indexe ...
- StackExchange.Redis 官方文档
原文:StackExchange.Redis 官方文档 时隔多年的翻译终于完成了第六个,也是很重要的的官方文档,是介绍有关链接管理,管道流水线和多路复用的 官方地址在这里:官方文档 下面做个汇总: S ...
- DNW烧写FL2440 NAND Flash分区
转自 calvinlee1984 Subject:DNW烧写FL2440 NAND Flash分区 Date: 2-Mar-2011 By: Calvinlee1984@163 ...
- Angular7环境搭建报错
昨天写的2019年Angular7——安装搭建路由方法不太正统,今天又去翻了下angular官网,跟着上面的环境搭建与部署走了一遍 从安装@angular/cli命令行工具开始 本篇主要记录下搭建过程 ...
- VS无法访问IIS元数据库 您没有足够的特权访问计算机上的IIS网站
进入windows\regedit.exe下的HKEY_CRRENT_USER\Software\Microsoft\Windows\CurrentVersion\Exploer\User Shell ...
- [Nuxt] Build a Vue.js Form then use Vuex Actions to Post to an API in Nuxt
The default behavior of submitting an HTML form is to reload the page. You can use the Vue.js @submi ...
- complex query几个原则
1.一般来说in比exists更有利(更容易变成join). 2.尽量避免union,使用union all代替,避免sort. 3,绝对不能在没有on条件下使用join(除非有特殊目的). 4.ou ...