Java程序在定义类时,除了使用class关键字标识之外,还可以在class之前增加若干类的修饰符来修饰限定所定义的类的特性。类的修饰符分为访问控制符和非访问控制符两大类。修饰符之间的先后排列次序对类的性质没有任何影响。
一,非访问修饰符。
1, 抽象类:
凡是用abstract修饰符修饰的类被称为抽象类。抽象类就是没有具体对象的概念类。
抽象类是一种经过优化的概念组织方式:把共同特点抽象出来;其后在描述和处理某一种具体对象时,就只需描述不同的特殊之处。这种组织方式使得所有的概念层次分明,简洁洗练,非常符合人们日常的思维习惯。
由于抽象类是它的所有子类的公共属性的集合,所以使用抽象类的一个优点就是可以充分利用这些公共属性来提高开发和维护程序的效率。
值得一提的是,面向对象技术是要用更接近于人类思维方式的方法来处理实际问题,抽象类的设立就是这种思想的具体体现之一,它是模仿人类的思维模式的产物。
2,最终类:
如果一个类被final修饰符所修饰和限定,说明这个类不可能有子类。
被定义为final的类通常是一些有固定作用、用来完成某种标准功能的类。如Java系统定义好的用来实现网络功能的InterAddress、Socket等类都是final类。
abstract和final修饰符不能同时修饰一个类,因为abstract类自身没有具体对象,需要派生出子类后在创建子类的对象;而final类不可能有子类。这样放在一起修饰就没有意义了。
3,有些类的修饰符也可以用来修饰类中的域或方法:
(1) 域:是类和对象的静态属性,定义域的操作就是说明变量或创建对象的操作。
<1> 静态域:
用static修饰符修饰的域是仅属于类的静态域。静态域是类中每个对象共享的域。他们是类的域,不属于任何一个类的具体对象。是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值。
<2> 静态初始化器:
静态初始化器是由关键字static引导的一对大括号括起的语句组。作用是:在加载时,初始化类的静态域。
与构造函数相同,他们都是用来完成初始化的工作,但是静态初始化器与构造函数有三点不同:
①构造函数是对每个新创建的对象初始化,而静态初始化器是对类自身进行初始化。
②构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载到内存时由系统调用执行。
③不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。
<3> 最终域:
用final修饰的域,实际上就是Java中的常量。
用final修饰符说明常量时,需要注意以下几点:
①需要说明常量的数据类型。
②需要同时指出常量的具体取值。
③因为所有类对象的常量成员,其数值都固定一致,为了节省空间,常量通常声明为static。
<4> 易失域:
如果一个域被volatile修饰符所修饰,说明这个域可能同时被几个线程所控制和修改,即这个域不仅仅被当前程序所掌握,在运行过程中可能在其他未知的程序操作影响和改变该域的取值。在使用当中应该特别注意。
通常,volatile用来修饰接受外部输入的域。如表示当前时间的变量将系统的后台线程随时修改,以保证程序中取到的总是最新的当前系统时间,所以可以把它定义为易失域。
(2)方法:是类的动态属性,标志了类所具有的功能和操作。小括号是方法的标志。
<1> 抽象方法:
修饰符abstract修饰的抽象方法是一种仅有方法头,而没有具体的方法体和操作实现的方法。使用抽象方法的目的是使所有的子类,对外都呈现一个相同名字的方法,是一个统一的接口。所有的抽象方法,都必须存在于抽象类之中。
<2> 静态方法:
用static修饰符修饰的方法,是属于整个类的类方法,不用的是对象或实例的方法。调用这种方法时,应该使用类名作前缀;这种方法在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有;只能处理属于整个类的成员变量。
<3> 最终方法:
用final修饰符修饰的类方法。功能和内部语句不能再更改的方法,不能再被继承。
注意:所有已被private修饰符限定为私有的方法,以及所有包含在final类中的方法,都被缺省地认为是final的。
<4> 本地方法:
用native修饰符声明其他语言书写方法体并具体实现方法功能的特殊的方法。这里的其他语言包括C/C++/FROTRAN/汇编等。由于native的方法的方法体使用其他语言在程序外部写成,所以所有的native方法都没有方法体,而用一个分号代替。
<5> 同步方法:
分享到:
相关推荐
这道题考察了Java的访问修饰符和继承。`SuperclassX`中的`superclassMethodX`是受保护的(protected),所以在同一个包内的子类`SubclassY`中可以访问它,因此在第9行调用`objY.superclassMethodX()`是合法的,不会...
4. 访问修饰符:Java提供了`public`, `private`, `protected`和`default`四种访问控制符,用于控制类、接口和类成员的可见性。`static`是一个修饰符,用于声明静态成员,但它不是访问控制符。 5. 静态方法:`static...
面试中可能会涉及子类如何重写父类方法,super关键字的使用,以及访问控制修饰符(public、private、protected和默认)对继承的影响。 多态性是Java中实现动态绑定的基础,它允许我们使用父类型的引用指向子类型...
然后从类型名向左读取,遇到的第一个`*`表示指针,遇到的第一个`&`表示引用,`const`修饰符表示变量或指针是常量。 以下是一些使用`const`的例子,虽然无法直接编译,但有助于理解`const`的用法: - `char ** p1;` ...
11. **修饰符**:如`i`忽略大小写,`g`全局匹配,`m`多行模式,这些修饰符可以改变正则表达式的默认行为。 在"源码"和"工具"的标签中,我们可以推断出正则表达式通常在编程语言的源代码中使用,作为文本处理的工具...
- 使用`private`修饰符限制类的成员变量和方法的可见性,以保护数据安全。 - 除非确实需要,否则不要过度使用`public`,以减少对外部环境的依赖。 **4.4 大型方法** - 避免编写过长的方法,因为这通常意味着该方法...
在Java中,通过访问修饰符如 `private`、`protected` 和 `public` 来实现封装。 4. **多态性**:多态性允许不同类的对象对同一消息作出响应,这是通过方法重载和方法覆盖实现的。多态性增强了代码的灵活性和可扩展...
1. **指针的类型**:指针的类型是指针变量自身的类型,决定于声明时的修饰符。例如: - `int*ptr;` 的指针类型为 `int*`。 - `char*ptr;` 的指针类型为 `char*`。 - `int**ptr;` 的指针类型为 `int**`。 - `int...
2. **访问修饰符的区别**: - **public**:公共访问,可以在任何地方访问。 - **private**:私有访问,只能在当前类中访问。 - **protected**:受保护访问,可在当前包和子类中访问。 - **默认(不写)**:包级...
深入讨论抽象类、接口、访问修饰符的区别和使用场景,以及如何利用多态实现动态绑定。 3. **集合框架**:重点掌握ArrayList、LinkedList、HashSet、HashMap等常见集合的内部结构和操作原理。了解List、Set、Map接口...
这篇可能涉及Java的访问控制修饰符(public, private, protected, package-private),以及类、接口和方法声明的规则,解释了如何通过访问控制来保护程序的封装性。 8. **用 JSP 在客户端生成 JavaScript 代码来...
- search(re规则, 字符串, 修饰符):只要字符串中有匹配该规则的,则匹配成功。 - findall(re规则, 字符串, 修饰符):把所有匹配的字符放在列表中并返回。 正则表达式还有一些常用的匹配规则: - '^'用于匹配字符串...
5. **l或h**: 数据类型修饰 - `l`: 对于整型数据,`l`表示输出`long`类型,对于浮点数,表示`double`类型。例如,`%ld`用于输出长整型,`%lf`用于输出双精度浮点数。 - `h`: 用于将整型格式字符修正为`short`类型...
9.2.12 printf修饰符 81 9.2.13 awk数组 86 9.3 小结 88 第10章 sed 用法介绍 89 10.1 sed怎样读取数据 89 10.2 调用sed 89 10.2.1 保存sed输出 90 10.2.2 使用sed在文件中查询文本的方式 90 10.2.3 基本sed编辑命令...
virtual修饰符会被隐形继承的。 private 也被集成,只事派生类没有访问权限而已 virtual可加可不加 子类的空间里有父类的所有变量(static除外) 同一个函数只存在一个实体(inline除外) 子类覆盖它的函数不加...