作用域
|
当前类
|
同一
package
|
子孙类
|
其他
package
|
public
|
√
|
√
|
√
|
√
|
protected
|
√
|
√
|
√
|
×
|
default
|
√
|
√
|
×
|
×
|
private
|
√
|
×
|
×
|
×
|
不写时默认为
default
final
修饰符
final
具有不可更改的意思,它可以修饰非抽象类
,非抽象成员方法和变量
。
用
final
修饰的类不能被继承,没有子类。
如
String
用
final
修饰的方法不能被子类的方法覆盖
用
final
修饰的变量表示常量,只能被赋值一次
用
final
不能修饰构造方法
,因为方法覆盖这一概念仅适用于类的成员方法,而不适用于类的构造方法,父类的构造方法和子类的构造方法之间不存在覆盖关系,因此用
final
修饰构造方法是豪无意义的。
父类中用
private
修饰的方法不能被子类的方法覆盖,因此
private
类型的方法默认是
final
类型的
。
final
类
String
类
,不让继承,封装实现的细节。
final
方法
在某些情况下,出于安全的原因,父类不允许子类覆盖某个方法,此时可以把这个方法声明为
finnal
类型。
java.lang.Object
类,
getClass
()为
final
类型,
equals
()不为
final
类型。
final
变量
用
final
修饰的变量表示取值不会改变的常量。
final
修饰符可以修饰静态变量,实例变量和局部变量,分别表示静态常量,实例常量和局部常量。
例如
出生日期,年龄的限制等。
final
变量都必须显示初始化,否则会导致编译错误。
final
变量只能被赋值一次。
在程序中使用
final
修饰符来定义常量的作用
提高程序的安全性,禁止非法修改取值固定并且不允许修改的数据
提高程序代码的可维护性。
static
关键字
static
修饰符可以用来修饰类的成员变量,成员方法和代码块
。
用
static
修饰的成员变量表示静态变量
,可以直接通过类来访问
。
用
static
修饰的成员方法表示静态方法
,可以直接通过类名来访问
。
用
static
修饰的程序代码块表示静态代码块
,当
JAVA
虚拟机加载类时
,就会执行该代码块
。
被
static
所修饰的成员变量和成员方法标明归某个类所有,它不依赖于类的特定实例,被类的所有实例共享
。只要这个类被加载,
JAVA
虚拟机就能根据类名在运行时数据区的方法区定位到它们。
static
变量
类的成员变量有两种,一个是实例变量,没有被
static
修饰,一种是被
static
修饰过的变量,叫类变量或者静态变量。
静态变量和实例变量的
区别:
静态变量在内存中只有一个拷贝,运行时
JAVA
虚拟机只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。可以直接通过类名访问静态变量。
对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响。
static
方法
成员方法分为静态方法和实例方法
。用
static
修饰的方法叫做静态方法,或者类方法。静态方法和静态变量一样,不需要创建类的实例,可以直接通过类名来访问。
因为静态方法不需要通过它所属的类的任何实例就会被调用,因此在静态方法中不能使用
this
和
super
关键字,也不能直接访问所属类的实例变量和实例方法,但是可以直接访问所属类的静态变量和静态方法。在
static
方法内,不能直接访问非
static
变量或者方法。
static
代码块
类中可以包含静态代码块,它不存在于任何方法体中。在
JAVA
虚拟机加载类时会执行这些静态代码块。如果类中包含多个静态块,那么
JAVA
虚拟机将按照他们在类中出现的顺序依次执行它,并且每个代码块只会被执行一次。
static
和
abstract
永远不能放在一起用
abstract
修饰符与
final
修饰符连用
如果一个方法是静态的
,它就必须自力更生,自己实现该方法
。如果一个方法是抽象
的,那么它就只表示类所具有的功能,但不会去实现它
,在子类中
才会去实现它
。
abstract
修饰符
abstract
修饰符可以用来修饰类
和成员方法
用
abstract
修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化
,即不允许创建抽象类本身的实
例。没有用
abstract
修饰的类称为具体类,具体类可以被实例化。
用
abstract
修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。没有用
abstract
修饰的方法称为具体方法,具体方法具有方法体。
abstract
语法规则:
抽象类可以没有抽象方法
,但包括了抽象方法的类必须被定义为抽象类
。如果子类没有实现父类中所有的抽象方法,那么子类也必须被定义为抽象类
。
抽象类中可以有非抽象的构造方法
,创建子类的实例时可能会调用这些构造方法。抽象类不能被实例化,然而可以创建一个引用变量,其类型是一个抽象类,并让它引用非抽象的子类的一个实例。
抽象类及抽象方法不能被
final
修饰符修饰
。因为抽象类只允许创建子类,它的抽象方法才能被实现,并且只有它的具体子类才能被实例化,而用
final
修饰的类不允许拥有子类,用
final
修饰的方法不允许被子类方法覆盖,因此把
abstract
修饰符与
final
修饰符连用,会导致自相矛盾。
分享到:
相关推荐
C#学习之路--访问修饰符 访问修饰符是C#语言中的一种机制,用于控制对象的访问权限。在C#中,访问修饰符有五种:private(私有的)、protected(受保护的)、internal(程序集内部的)、public(公开的)和...
java代码-使用java解决private修饰符的源代码 ——学习参考资料:仅用于个人学习使用!
非访问修饰符包括 final、static 和 abstract 三种,用于控制类、成员变量和方法的继承关系和行为。 一、访问修饰符 访问修饰符是 Java 中最基本的修饰符,用于控制类、成员变量和方法的访问权限。访问修饰符有四...
访问修饰符可以分为四种:public、protected、private 和缺省(无访问修饰符)。 public 访问修饰符 public 访问修饰符是最宽松的访问权限,可以被所有类访问。使用 public 访问修饰符的类必须定义在和类名相同的...
本文将详细探讨Java中的五种权限修饰符:`public`、`protected`、`default`(也称为包访问权限)、`private`以及`static`修饰类的情况,并通过实例来展示这些修饰符的具体应用。 #### 1. Public - **概述**: - `...
这些修饰符定义了哪些代码可以访问特定的类型或成员,从而确保了代码的封装性和安全性。以下是C#中的四种主要访问修饰符的详细介绍: 1. **public**: - 当一个类或成员被声明为`public`时,它可以在任何地方被...
总结来说,`s`修饰符是JavaScript正则表达式中的一种重要扩展,它扩展了`.`的匹配范围,使其能够匹配包括`\n`和`\r`在内的所有字符,这对于处理多行文本和进行全局搜索非常有帮助。在编写JavaScript代码时,根据需求...
这些修饰符组合使用,可以帮助开发者精确地控制类和方法的行为,提高代码的可维护性和安全性。理解并熟练运用这些修饰符是成为Java开发高手的关键步骤之一。在实际编程中,应根据需求选择合适的访问级别和行为特性,...
C#是一种广泛使用的面向对象的编程语言,其强大的功能很大程度上归功于各种各样的修饰符。修饰符是用于在代码中定义访问级别、控制流程、实现多态性等的关键元素。在这里,我们将深入探讨C#中的主要修饰符,帮助你...
以下是对标题和描述中提及的Java修饰符及其相关知识点的详细介绍: 1. 类的访问控制修饰符: - **public**:公共访问修饰符,允许任何地方的代码访问该类或成员。这意味着类或方法可以在任何包中被调用。 - **...
React-decoration 是一个专门为React组件设计的修饰符集合,它提供了多种功能来增强和扩展React组件的行为。这个库的目的是为了简化复杂组件的构建过程,通过装饰器模式来添加额外的功能,比如状态管理、数据处理、...
1、包: 1、全部小写 2、第一级 指该项目的类型,如com,org,gov等, 2、 访问权限修饰符 3、封装性: 1、静态属性: 1、static属性可以使
权限修饰符的使用位置
通过合理使用类修饰符,开发者可以更好地控制类成员的可访问性和作用域,从而提高代码的安全性和模块化程度。接下来,我们将深入探讨几种常见的类修饰符,并结合示例来理解它们的功能和应用场景。 #### Public - *...
每种修饰符都有其特定的访问权限和使用场景。 一、public 访问权限修饰符 public 访问权限修饰符表明该成员变量和方法是共有的,能在任何情况下被访问。使用 public 修饰符的成员变量和方法可以被任何类访问,无论...
继承实现了代码的复用与维护,修饰符控制了类和成员的访问权限,多态使得程序更加灵活,而抽象类为子类提供了一个共同的模板和抽象方法实现的要求。理解和掌握这些知识点对于学习和应用Java面向对象编程至关重要。
通过本篇文章的学习,读者将能够深入理解这些修饰符的具体作用与应用场景,并掌握如何恰当地使用它们来限制类、接口、成员变量及方法的访问范围。此外,还将探讨如何合理选择合适的访问控制权限修饰符以确保数据的...