Java宣言的时候,Java基础恶补——宣言及访问控制

Java基础恶补——声明及访问控制

[SCJP Sun Certified Programmer for Java 6 Study Guide (Exam 310-065)]  chapter 1

一. 标识符

1. 标识符只能由字母、下划线、货币符号、数字

组成,除数字

外其余均可作为标识符的开头符号。(PS:汉字作为标识符也是合法的,虽然通常不会使用。)

2. 标识符的长度不限。

3. JavaBeans方法必须以驼峰式命名,同时根据其用途,必须以set, get, is, add, remove其一作为开头。

二. 声明规则

1. 1个源代码文件只能包含1个public类,且文件名必须和该public类的名称一致。

2. 1个源代码文件只能有1个package声明,可以有多个import声明。

3. package声明必须位于源代码文件的第1行(注释不算),import声明必须位于package和类声明之间,如果没有package声明,则import必须位于第1行(注释不算)。

4. package和import声明作用于1个源代码文件中的所有类。

5. 1个源代码文件可以包含多个非public类。

6. 不含public类的文件无命名限制。

三. 类的声明

1. 访问控制符

1) 共有3个访问控制修饰符:public, protected, private;共有4个访问级别:public, protected, default, private。

2) 类只有 public 或 default 这2个访问级别。

3) 标识为 default 的类只对同包下的其他类可见;标识为 public 的类对所有其他类可见。

4) 类的可见性决定着:

a) 是否能创建该类的实例;

b) 是否能继承该类;

c) 是否能访问该类的方法和属性。

2. 非访问控制符

1) 可修饰类的非访问控制修饰符共有3个:final, abstract, strictfp。

2) 1个类不能同时用 final 和 abstract 进行修饰。

3) 1个标识为 final 的类不能被继承;1个标识为 abstract 的类不能被实例化。

4) 1个只有1个abstract 方法的类必须是 abstract 的;1个标识为 abstract 的类可以有 abstract  方法和非 abstract  方法。

5) 1个abstract 类的首个非 abstract 子类必须实现所有 abstract 方法。

四. 接口及其实现

1. 接口用于约束1个类能做什么而不是怎么做。

2. 接口可以被任何类实现,不受类的继承树限制。

3. 无论是否用abstract 修饰,接口实际上就是个100%的 abstract 类。

4. 接口只能有abstract 方法。

5. 接口方法默认是 public 和 abstract 的,可以不显式的使用这2个修饰符。

6. 接口可以有常量,这些常量默认是 public, static, final 的,可以不显式的使用这3个修饰符,或用这3个修饰符的任意组合进行修饰。

7. 1个合法的非abstract实现类有以下属性:

1) 它提供接口方法的具体实现;

2) 它实现的方法必须遵守所有合法的override规则;

3) 实现方法不能声明任何新的checked exceptions,也不能声明任何比接口方法所声明的exceptions低级的checked exceptions;

4) 实现方法可以声明任何runtime exceptions而不用管接口声明;

5) It must maintain the exact signature (allowing for covariant returns)

and return type of the methods it implements (but does not have to

declare the exceptions of the interface).

8. 1个接口的实现类可以是 abstract 的;1个abstract 类不必实现接口方法。

9. 1个类只能继承1个类,但可以实现多个接口。

10. 接口可以继承1个或多个接口。

11. 接口不能继承类,也不能实现类或接口。

五. 类成员的声明

1. 访问控制修饰符

Visibility

Public

Protected

Default

Private

本类

Y

Y

Y

Y

同包其他类

Y

Y

Y

N

同包子类

Y

Y

Y

N

非同包子类

Y

Y (通过继承)

N

N

非同包非子类

Y

N

N

N

1) 类成员变量的访问有2个途径:1个类访问其他类的成员;子类访问父类的成员。

2) 如果1个类是不可被访问的,则这个类的所有成员也是不可被访问的;类的可见性先于其成员的可见性。

2. 非访问控制修饰符

1) abstract:

a) abstract不能和final、private、static同时使用。

b) abstract方法的声明语法为:1个签名、1个返回类型、1个可选的throws、无实现。

c) 辨别1个非abstract方法的3个要素:没有用abstract修饰、有大括号、大括号里有代码。

2) synchronized只能用于修饰方法或代码块,synchronized方法可以用任何访问控制修饰符进行修饰。

3) native只能用于修饰方法;native方法的声明类似abstract方法声明,无方法体。

4) strictfp只能用于修饰类或方法;strictfp表示浮点使用IEEE 754标准。

3. 本地变量

1) 不能用访问控制符修饰本地(method, automatic, or stack)变量;

2) 本地变量能用的修饰符只有 final;

3) 本地变量无默认值,所以必须在使用前进行初始化;

4) 和实例变量同名的本地变量是合法的。

4. 可变参数:

1) 从Java5开始,方法的声明可以接受0到多个参数,这种方式叫做可变参数;

2) 可变参数以...表示,...必须紧跟类型;

3) 1个方法只能有1个可变参数;

4) 可变参数必须只能处于最后1个参数的位置。

5. 实例变量声明

1) 实例变量可以用任何访问控制修饰符进行修饰;也可以用final、transient修饰;

2) 实例变量不能用abstract, synchronized, native, or strictfp修饰;

3) final变量有以下属性:

a) final变量的值在初始化后不可修改;

b) final引用不可修改(不能再指向另一个对象);

c) final引用必须在构造函数完成前初始化。

d) 不存在final对象,final引用并不表示该对象是不变的(immutable)。

4) transient, volatile 只能修饰实例变量。

6. 数组声明

1) 数组可以容纳原子类型或对象类型的元素,数组本身是个对象;

2) 声明数组时,方括号可以位于变量名左侧或右侧;

3) 声明数组时,包含size总是不合法的;

4) 数组元素必须是同个类型或存在IS-A关系的。

7. 静态变量和方法

1) 与类的实例无关,使用时不需要类的实例。

2) 只有1份copy,所有类的实例共享它们。

3) 静态方法不能直接访问非静态成员。

8. 枚举类

1) 1个枚举类列举了1个类型的一组值。

2) 1个枚举类既不是String、也不是int,而是枚举类型。

3) 枚举类可以声明在类的内部或外部,但不能在方法内声明。

4) 声明在类的外部的枚举类不能用static, final, abstract, protected, private 进行修饰。

5) 枚举类可以包含构造函数、方法、变量、constant class bodies。

6) 枚举类常量可以是带有参数的构造函数形式。

7) 枚举类构造函数可以有参数,可以被重载。

8) 枚举类构造函数不能直接通过代码调用,它在1个枚举类型初始化时被自动调用。

9) 枚举类声明最后有没有;符号都是合法的。

10) 枚举类的静态values()方法返回这个包含这个枚举类所有类型的数组。

9. 构造函数声明

1) 构造函数的名称必须和类名相同;

2) 构造函数无返回类型(void可以用,but badly);

3) 构造函数可以用任何访问控制修饰符来进行修饰;

4) 构造函数不能用static、final、abstract修饰;

5) 构造函数允许可变参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

域策略禁用usb

文档及模板可在 http://pan.baidu.com/s/1qYTcjTy 下载 pro_usb_users.adm 此模板可禁用到 指定盘符,针对用户策略 pro_usb_computers.adm 此模板 针对计算机,一般只要它就好了。 可以从 3 个方面下手 adm 配置 文件。注册表usb驱动其实 adm配置文件&…

java常用代码,Java常用代码

Java常用代码/*** author he*** 把Date转换成String,以yyyy-MM-dd HH:mm:ss的形式显示*/public static String DateToString(Date tempDate) {String date_str "";SimpleDateFormat formatter new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); …

【Effective Java】6、使用复合优先于使用继承

这个,不管是什么书都会这样说,因为常常我们并不需要继承,而只是想把类进行一定的扩展,而我们想扩展的属性或方法对应的类都有,这个时候如果两者是is a的关系,这种关系是确实存在的,那么就可以使…

php遍历数组的四种方法,PHP遍历数组的常见几种方法

小白发博文,看到某个知识点,就当复习下。$arrarray(football > well,swimming>very well,run>not well);第一种方法:foreach遍历数组:foreach($arr as $key>$val){echo $key.-----.$val.;}第二种方法:…

java调用wadl_Java中的WADL:温和的介绍

java调用wadlWADL( Web应用程序描述语言 )对REST而言,WSDL对SOAP而言。 这种语言的存在引起了很多争议(请参阅: 我们需要WADL吗? 或者 需要 WADL还是不需要WADL )。 我可以想到使用WADL的一些合…

Js的 继承

Js 和 Java , C等语言不是很一样 . 其他语言有 类和实例 但是Js就比较特殊 , 所以 类和实例 只能说是大多数面向对象编程的语言的基本概念 . Js比较特殊 , 它不去分类和实例的概念 . 而是通过原型(prototype)来实现面向对象编程 . 下面介绍Js中第一种用于继承的方法 var rob…

php 伪静态 500错误,Apache开启伪静态后报500错误.

出自:http://blog.163.com/lgh_2002/blog/static/44017526201051452939761/检查APACHE日志发现如下信息:Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if nec…

onhashchange

1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>Document</title>6 </head>7 <body>8 <input type"button" value"随机" id"btn1…

mysql+yes数据类型,怎样修改mysql列的数据类型?

修改字段(列)数据类型修改字段的数据类型就是把字段的数据类型转换成另一种数据类型。在 MySQL 中修改字段数据类型的语法规则如下&#xff1a;ALTER TABLE MODIFY 其中&#xff1a;表名&#xff1a;指要修改数据类型的字段所在表的名称&#xff1b;字段名&#xff1a;指需要修…

Redis分片

本文是我们学院课程的一部分&#xff0c;标题为Redis NoSQL键值存储 。 这是Redis的速成班。 您将学习如何安装Redis并启动服务器。 此外&#xff0c;您将在Redis命令行中乱七八糟。 接下来是更高级的主题&#xff0c;例如复制&#xff0c;分片和集群&#xff0c;同时还介绍了…

Openstack入坑指南

什么是云计算 概念 云计算是一种基于互联网的计算方式&#xff0c;通过这种方式&#xff0c;共享的软硬件资源和信息&#xff0c;可以按需求提供给计算机和其他设备。用户不需要了解”云“中的基础设施细节&#xff0c;不必具有相应的专业知识&#xff0c;也无需直接控制。云计…

Akka型演员:探索接收器模式

在上一篇文章中&#xff0c;我们研究了Akka Typed提供的一些基本功能。 在本文和下一篇文章中&#xff0c;我们将更进一步地了解一些其他功能&#xff0c;并通过查看Akka Typed提供的两种不同模式来做到这一点&#xff1a;Receiver和Receptionist模式。 如果您是Akka Typed的新…

读书笔记 - 《乌合之众》

以往的随笔都是胡乱写两句&#xff0c;目的主要是为了督促自己尽快把堆积如山的书籍清理掉&#xff0c;但这次值得花几分钟真的写几句。其实实在都想不起来怎么会买它&#xff0c;这次偶然拿起这本书也是因为它很薄&#xff0c;读大部头读得累了放松一下&#xff0c;没想到居然…

MATLAB如何用循环分割,利用Matlab进行分割提取浮游生物

我试图从扫描图像中提取浮游生物.大纲也不错,但是,现在我不知道如何提取图像,因此可以单独保存每个浮游生物.我尝试使用标签,但是有很多噪音,它标出了每一个规格.我想知道是否有更好的方法来做到这一点.这是我的代码&#xff1a;I imread(plankton_2.jpg);figure, imshow(I), …

saxparser_使用SaxParser和完整代码进行XML解析

saxparserSAX解析器使用回调函数&#xff08;org.xml.sax.helpers.DefaultHandler&#xff09;通知客户端XML文档结构。 您应该扩展DefaultHandler并重写一些方法来实现xml解析。 覆盖的方法是 startDocument&#xff08;&#xff09;和endDocument&#xff08;&#xff09;–…

第一个Python程序

在E:\Python 下新建一个hello.py文件&#xff0c;里面的内容是print(hello world) 进入命令提示窗格&#xff0c;输入E: 点击回车 输入 cd python 点击回车 输入Python hello.py 结果如图 转载于:https://www.cnblogs.com/lgqboke/p/5882049.html

matlab导入txt生成曲面,求助:怎样将txt的数据导入到Matlab中并根据参数画出波形...

导师让我把波形画出来&#xff0c;这下完全不会啊&#xff01;希望各位高手帮帮在下……txt中部分数据如下&#xff1a;ID DDD HH:MM:SS.mmmuuun PARA1 PARA2 CH RISE COUN ENER DURATION AMP A-FRQ RMS ASL PCNTS THR R-FRQ I-FRQ SIG STRNGTH ABS-ENERGY1…

Java多线程:易失性变量,事前关联和内存一致性

什么是volatile变量&#xff1f; volatile是Java中的关键字。 您不能将其用作变量或方法名称。 期。 我们什么时候应该使用它&#xff1f; 哈哈&#xff0c;对不起&#xff0c;没办法。 当我们在多线程环境中与多个线程共享变量时&#xff0c;我们通常使用volatile关键字&…

20145219 《信息安全系统设计基础》第01周学习总结

20145219 《信息安全系统设计基础》第01周学习总结 教材学习内容总结 别出心裁的Linux命令学习法 1、Ubuntu快捷键 CTRLALTT:打开终端&#xff1b;CTRLSHIFTT&#xff1a;新建标签页&#xff1b;ALT数字N&#xff1a;终端中切换到第N个标签页&#xff1b;Tab:终端中命令补全&…

拉盖尔多项式 matlab,类氢原子的定态波函数

&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp预备知识 球坐标系中的定态薛定谔方程&#xff0c;原子单位制本文使用原子单位制&#xff0e;类氢原子(hydrogen-like atom)被定义为原子核有 $Z$ 个质子(核电荷为 $Ze$)有一个核外电子的原子/离子&#xff0…