`
zjx2388
  • 浏览: 1325061 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

第一章 声明和访问控制

阅读更多

1.    标识符

(1)     标识符可以用字母、下画线或货币符号开头;

(2)     在第一个字符之后,标识符还可以包含数字;

(3)     标识符可为任意长度;

(4)     必须使用骆驼命名法规则命名JavaBeans方法,并且根据方法的目的,必须以setgetisaddremove开头;

2.    声明规则

(1)   一个源代码文件只能有一个公共类;

(2)   如果源文件包含公共类,则该文件名称应该与公共类名称相同;

(3)   一个文件只能有一条package语句,但可以有多条import语句;

(4)   Package语句(如果有的话)必须位于源文件的第一行(注释语句除外);

(5)   Import语句(如果有的话)必须位于package语句之后、类声明语句之前;

(6)   如果没有package语句,import语句必须是源文件的第一条语句(注释语句除外);

(7)   Package语句和import语句应用于该文件中的所有类;

(8)   一个文件可以具有多个非公共类;

(9)   没有公共类的文件没有任何命名限制

3.    类访问修饰符

(1)   3个访问修饰符publicprotectedprivate;

(2)   4个访问级别:public protected、默认和private;

(3)   类只能有public或默认访问级别;

(4)   具有默认访问级别的类只对位于同一个包中的类是可见的;

(5)   具有Public访问级别的类对于所有包中的类都是可见的;

(6)   类的可见性涉及到类中的代码是否能够:

a.创建另一个类的实例b. 扩展/子类化另一个类c.访问另一个类的方法/变量

4.  类修饰符(非访问)

(1)     类也能够被修饰成finalabstractstrictfp;

(2)     类不能同时被修饰成finalabstract;

(3)     最终类不能被子类化;

(4)     抽象类不能被实例化;

(5)     类中的单个抽象方法意味着整个类必须是抽象的;

(6)     抽象类可以有抽象方法和非抽象方法;

(7)     扩展抽象类的第一个具体类必须实现其所有的抽象方法;

5.    接口实现

(1)     接口是类能够做什么的契约,但是它们没有指定类操作的实现方式;

(2)     接口能够被来自任何继承树的任何类实现

(3)     接口就像一个100%抽象类,无论是否在其声明中键入abstract修饰符,它都隐含是抽象的;

(4)     接口只能有抽象方法,不允许具体方法;

(5)     接口方法默认是公共的和抽象的,这些修饰符的显示声明是可选的;

(6)     接口可以有常量,它们隐含总是公共的、静态的和最终的;

(7)     公共的、静态的和最终的接口常量声明可以选择任意组合;

(8)     合法的非抽象实现类具有如下属性:

a.       它为接口的所有方法提供具体实现

b.       对于它实现的方法,必须遵循所有的合法重写规则

c.       它一定不能为实现的方法声明任何新的检验异常

d.       它一定不能声明比该接口方法中所声明的异常更广泛的任何检验异常

e.       无论接口声明如何,它都可以在任何接口方法实现上声明运行时异常

f.        它必须包含与它所实现方法完全相同的方法签名和返回类型(但不必声明该接口的异常)

(9)     实现接口的类本身可以是抽象的;

(10) 抽象实现类不必实现接口方法(但是第一个具体子类必须实现);

(11) 类只能扩展一个类(没有多重继承),但它能够实现多个接口;

(12) 接口可以扩展一个或多个其它接口;

(13) 接口不能扩展类,或者实现类或接口;

(14) 当参加考试时,请在验证其它代码逻辑之前检查接口和类声明的合法性;

6.    成员访问修饰符

(1)     方法和实例(非局部的)变量称为成员;

(2)     成员可以使用所有4个访问级别:publicprotected、默认和private;

(3)     成员访问有两种形式:

a.       一个类中的代码能够访问另一个类的成员B.子类能够继承其超类的成员

(4)     如果不能访问类,则不能访问其成员;

(5)     要在确定成员可见性之前确定类可见性;

(6)     公共成员能够被其它所有类访问,甚至是不同包中的类;

(7)     如果超类成员是公共的,则无论在哪个包中,子类都会继承这个属性;

(8)     不用点运算符(.)访问的成员必须属于同一个类;

(9)     This总是引用当前执行的对象;

(10) This.aMethod()与只调用aMethod()完全相同;

(11) 私有成员只能被同一个类中的代码访问;

(12) 私有成员对子类是不可见的,因此,不能继承私有成员;

(13) 默认成员和保护成员的区别只是在子类被调用时:

a.       默认成员只能被同一个包中的类访问

b.       保护成员能够被同一个包中的其它类访问,也可以被任意包中的子类访问

c.       保护 = + 子孙 (子孙指子类)

d.       对于包外子类,只能通过继承访问保护成员,不能通过使用对超类实例的引用来访问保护成员(即:继承是包外子类访问其超类保护成员的唯一机制)

e.       对位于子类包中的任何其它类来说,该子类从其它包中继承的保护成员都是不可访问的,但子类的子类除外

7.    局部变量

(1)     局部(方法、自动或栈)变量声明不能有访问修饰符

(2)     Final是唯一可用于局部变量的修饰符

(3)     局部变量没有默认值,因此,在使用前必须加以初始化

8.    其它修饰符成员

(1)     Final方法在子类中不能被重写

(2)     用签名、返回类型以及可选的throws子句声明abstract方法,但是没有实现这些方法

(3)     Abstract方法以分号而不是波形括号结尾

(4)     识别非抽象方法(3):A.该方法未标识为abstract B.该方法有波形括号C.该方法在两个波形括号之间有代码

(5)     扩展abstract类的第一个非抽象(具体)类必须实现所有抽象类的抽象方法

(6)     Synchronized修饰符只能应用于方法和代码块

(7)     Synchronized方法能够具有任何访问控制,也能够标识为final

(8)     抽象方法必须被子类实现,因此,它们必须是可继承的。原因如下:

a.Abstract方法不能是私有的 b.Abstract方法不能是最终的

(9)     Native修饰符只能应用于方法

(10) Strictfq修饰符只能应用于类和方法

9.    具有var-arg的方法

(1)     Java 5,方法可以声明一个接受零个或多个变元的参数,即所谓的var-arg方法

(2)     Var-arg参数是用语法type…name声明的,例如:doStuff(int…x){}

(3)     Var-arg方法只能带有一个var-arg参数

(4)     在带有常规参数和一个var-arg参数的方法中,var-arg参数必须出现在最后面

10.变量声明

(1)     实例变量能够:

a.       具有任何访问控制 b.被标识为finaltransient

(2)     实例变量不能标识为abstractsynchronizednativestrictfp

(3)     声明与实例变量同名的局部变量是合法的,这称为隐藏

(4)     Final变量具有如下属性:

a.       一旦赋值之后,final变量就不能被重新初始化

b.       一旦将对象赋予final变量,final引用变量不能引用不同的对象

c.       在构造函数完成之前,final引用变量必须初始化

(5)     根本没有最终对象这种说法,标识为final的对象引用并不意味着该对象本身是不可变的

(6)     Transient修饰符只能应用于实例变量

(7)     Volatile修饰符只能应用于实例变量

11.数组声明

(1)     数组能够保存基本类型或对象类型,但数组本身就是对象

(2)     当声明数组时,括号可以位于变量名的左边或右边

(3)     在声明中包含数组大小永远是不合法的

(4)     对象数组能够保存通过该数组声明类型IS-A(或者instantceof)测试的任何对象。例如:如果Horse扩展Animal,那么Horse对象就能够放入Animal数组中

12.静态变量和方法

(1)     它们不属于类的任何具体实例

(2)     不需要类的实例,因为可以使用类的静态成员

(3)     静态变量/静态类只有一份副本,所有实例共享此副本

(4)     静态方法不能直接访问非静态成员

13.枚举

(1)     枚举指定了一个常量值列表,它们赋予某个类型

(2)     枚举不是Stringint,枚举常量的类型是枚举类型。例如:SummerFall就属于枚举类型Season

(3)     枚举可在类外部或内部声明,但不能在方法中声明

(4)     在类外声明的枚举不能被标识为staticfinalabstractprotectedprivate

(5)     枚举可以包含构造函数、方法、变量和常量特定类体

(6)     枚举常量可以使用语法BIG(8)将变元发送给枚举构造函数,其中int型字面值8会传递给枚举构造函数

(7)     枚举构造函数可以带有变元,并且可以被重载

(8)     永远不能在代码中直接调用枚举构造函数。它们总是在初始化枚举时自动调用的。

(9)     枚举声明末尾的分号是可选的。下面的代码是合法的:

Enum Foo{ONE,TWO,THREE}    Enum Foo{ONE,TWO,THREE};

(10) MyEnum.values()返回一个数组,包含MyEnum的值

分享到:
评论

相关推荐

    第6章 包、访问控制和接口1

    综上所述,Java的包、访问控制和接口是构建高效、安全和可扩展的面向对象程序的基础。它们帮助我们组织代码、控制访问权限,并定义类的行为规范。理解并熟练掌握这些概念对于任何Java开发者来说都是至关重要的。

    C#第一章简介

    总的来说,C#第一章的学习旨在为后续的面向对象编程打下坚实的基础,包括理解基本语法、类与对象的概念以及如何在控制台上进行基本的交互操作。随着对这些基础知识的掌握,开发者可以逐步构建更复杂的应用程序。

    J2SE第一章到第五章习题

    在本习题中,我们将探讨从第一章到第五章涉及到的关键知识点。 第一章通常会介绍Java语言的基础概念,包括: 1. **Java的历史与特性**:Java由Sun Microsystems开发,具有跨平台性、面向对象、安全性、健壮性等...

    js2阶段的js第一章课后习题答案

    本压缩包文件“js2阶段的js第一章课后习题答案”是针对JavaScript学习者的一个资源,特别是那些正在进行js2阶段学习的学员。这个章节通常涵盖JavaScript的基础概念,包括语法、变量、数据类型、操作符、流程控制以及...

    JAVA OOP 第一章作业

    在"JAVA OOP 第一章作业"中,学生可能会被要求设计和实现各种类、对象,并理解它们之间的关系,比如继承、多态等。此外,还会涉及到如何有效地使用封装,以及如何利用构造器初始化对象。通过这些练习,学生可以逐步...

    javascript高级程序设计笔记第一章.docx

    本文将深入探讨在"javascript高级程序设计笔记第一章"中提及的关键概念。 首先,ECMAScript(通常简称为ES)是JavaScript的标准化规范,由ECMA国际维护。在ECMAScript中,存在五种基本数据类型:Undefined、Null、...

    accp5.0 s2 javascript第一章所有作业包括上机练习题

    本资源“accp5.0 s2 javascript第一章所有作业包括上机练习题”是针对北大青鸟ACCP5.0第二阶段JavaScript课程的一系列学习材料,旨在帮助学生巩固和提升JavaScript编程技能。 首先,让我们深入探讨JavaScript的基础...

    标准c程序设计第六版第一章习题

    《标准C程序设计第六版》第一章的课后习题涵盖了C语言的基础概念和基本操作,是初学者理解和掌握C语言的重要途径。以下是对这些习题的解析和知识点概述: 1. **基本数据类型与变量**(如1002.c) - C语言中的基本...

    C#第一章上机作业代码

    7. **对象和类**:虽然可能在后续章节深入讨论,但第一章可能也会浅尝辄止地介绍面向对象的基本概念,如类的定义、对象的创建以及成员访问修饰符。 8. **异常处理**:学习try-catch块来捕获和处理程序运行时可能...

    C语言 源程序第一章

    “第一章”可能涵盖C语言的基础概念,如数据类型(整型、浮点型、字符型等)、变量的声明与初始化、基本输入输出(printf和scanf函数)、算术运算符和逻辑运算符的使用,以及流程控制语句(if条件语句、switch选择...

    SCCE Spring 第一章

    在"SCCE Spring 第一章"中,我们将深入探讨Spring的基本概念和核心特性。 **依赖注入(Dependency Injection,DI)** 依赖注入是Spring的核心特性之一,它简化了对象之间的关系管理。通过DI,对象的依赖关系在运行...

    Java 语言程序设计 基础版 第十版 第一章--第五章 课后编程练习题答案

    Java语言程序设计基础版第十版的第一章至第五章课后编程练习题答案涵盖了Java编程的基础概念和关键技能。这些章节的题目旨在帮助学习者深入理解Java语法、数据类型、控制结构、类与对象以及异常处理等核心概念。下面...

    java 第一章的课后作业

    第一个构造器为 `Student2` 对象设置基本属性,第二个构造器提供了更多的自定义选项。 ### 访问控制修饰符 访问控制修饰符用于控制类、方法或变量的可见性。在 `Student1` 类中可以看到 `private` 修饰符的使用: `...

    第一章:创建一个SpringBoot项目,并访问页面出现Hello Wold

    创建Spring Boot项目的第一步是使用Spring Initializr。这是一个在线工具,也可以通过IntelliJ IDEA或Eclipse等IDE集成。在Spring Initializr中,我们需要选择项目的基本信息,如项目类型、语言、JDK版本以及所需的...

    C语言基础(第一章)共2页.pdf.zip

    【标题】"C语言基础(第一章)共2页.pdf.zip" 涉及到的是C语言的基本知识,尤其是它的入门概念。C语言是一种强大的、通用的编程语言,被广泛用于系统开发、软件工程、嵌入式系统等领域。由于其高效、灵活和可移植性...

    JavaOOP_第1章上机练习.zip

    5. 访问控制修饰符:学习public, private, protected以及默认访问权限的含义和应用。 6. this关键字:了解this在对象引用和方法调用中的作用。 7. static关键字:理解静态成员和静态方法的特性,以及静态块的概念。 ...

    东南大学c++上机答案第一章实验一

    在东南大学的C++课程中,第一章实验一通常会涉及C++编程的基础概念和实践操作。这个实验旨在帮助学生建立起对C++语言的基本理解和编程技巧,为后续的学习打下坚实的基础。以下是对这一实验可能涵盖的知识点的详细...

    PHP5面向对象开发教程第一章-PHP5面向对象基础

    在PHP5中,可以通过访问控制修饰符(public, protected, private)来实现封装: ```php class MyClass { private $privateVar; // 只能在类内部访问 protected $protectedVar; // 在类及其子类中可访问 public $...

    C#学习课件(第一章)

    在C#编程语言的学习中,第一章主要介绍了C#的基础知识以及.NET框架的概念。.NET框架是一个由微软开发的软件框架,它提供了一个支持分布式、组件化的应用程序开发和执行的环境。框架的核心组成部分包括Common ...

Global site tag (gtag.js) - Google Analytics