作用域
|
当前类
|
同一
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
修饰符连用,会导致自相矛盾。
分享到:
相关推荐
WX小程序源码小游戏类提取方式是百度网盘分享地址
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
2021131528+谢镕汕.zip
SQLyong 各个版本,免费下载 SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。
计算机专业毕业设计VB精品论文资源
本项目是基于多种编程语言的露营服务平台设计源码,包含4315个文件,其中包括1752个JavaScript文件、885个TypeScript文件、420个WXML模板文件、406个WXSS样式文件、403个JSON配置文件、233个Markdown文档、182个WXS文件、13个PNG图像文件和6个MAP文件。系统专注于提供露营服务平台功能,支持地点搜索、预订功能等功能,为用户提供了一个稳定、高效的露营服务平台。
菜日常菜日常菜日常菜日常
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip 源代码-Flash+JS图片切换轮换特效ASP读取数据库版.zip
芯旺微 Kungfu芯片资料
计算机专业毕业时间之VB精品论文源代码资源
1716894470778.jpg
SQLyog-13.1.5-0.x64Community
残差注意力_基于Pytorch实现的残差注意力网络_附项目源码_优质项目实战
不同月份用户手机账单数据,包括短信费用、上网费用、折扣金额等等 字段包括 sms_fee web_fee extra_fee total_fee discount extra_discount actual_fee paid_fee等等
ADSP-BF533的EBIU总线驱动源码,
源代码-ExcelToAccess批量导入数据 v1.0.zip
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
芯旺微 Kungfu芯片资料