JAVA基础_修饰符

引言:Java的修饰符根据修饰的对象不同,分为类修饰符、方法修饰符、变量修饰符,其中每种修饰符又分为访问控制修饰符和非访问控制修饰符。
访问控制存在的原因:
a、让客户端程序员无法触及他们不应该触及的部分
b、允许库设计者可以改变类内部的工作方式而不用担心影响到客户端程序员

一、访问控制修饰符
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。
Java 支持 4 种不同的访问权限:
default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

1. 类修饰符
访问修饰符:公共类修饰符public
非访问控制符:抽象类修饰符 abstract 、最终类修饰符 final
(1)公共类修饰符 public : Java 语言中类的访问控制符只有 public 即公共的。每个 Java 程序的有且只有一个类是 public,它被称
为主类 ,其他外部类无访问控制修饰符,具有包访问性。注意:一个类的内部类可以被其他访问控制修饰符protected、default、
private修饰,相当于类的成员。
     (2)抽象类修饰符 abstract :用 abstract 修饰符修饰的类,被称为抽象类。
     (3)最终类修饰符 final :当一个类不能被继承时可用修饰符 final修饰为最终类。被定义为 final 的类通常是一些有固定作用、用来完成某
种标准功能的类。
     (4)类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。此时,这个类只能被同一个包中的类访问或引用。
这一访问特性又称为包访问性。

2.方法修饰符
访问控制修饰符:公共访问控制符public、保护访问控制符protected、缺省默认default、私有访问控制符private
非访问控制符:抽象方法控制符abstract 、静态方法控制符static 、最终方法控制符final 、本地方法控制符native 、
同步方法控制符synchronized
  (1)抽象方法控制符 abstract :用修饰符 abstract 修饰的方法称为抽象方法。抽象方法仅有方法头,没有方法体和操作实现。
      (2)静态方法控制符 static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;而不使用static 修饰、限定
的方法是属于某个具体类对象的方法。 由于 static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理
属于整个类的成员变量,即 static 方法只能处理 static的域。
      (3)最终方法控制符 final :用修饰符 final修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重写覆
盖。final固定了方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。所有被
private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类) 中的方法,都被认为是最终方法。
      (4)本地方法控制符 native :用修饰符 native 修饰的方法称为本地方法。为了提高程序的运行速度,需要用其它的高级语言书写程序的
方法体,那么该方法可定义为本地方法用修饰符 native 来修饰。
      (5)同步方法控制符 synchronized :该修饰符主要用于多线程程序中的协调和同步。
3.变量修饰符
访问控制符:公共访问控制符public 、保护访问控制符protected 、缺省默认访问控制符default、私有访问控制符private
非访问控制符:静态域修饰符static 、最终域修饰符 final 、易失 ( 共享 ) 域修饰符volatile 、暂时性域修饰符transient
(1)公共访问控制符 public :用 public 修饰的域称为公共域。由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减
少 public 域的使用。
      (2)私有访问控制符 private : 用 private 修饰的成员变量 ( 域 ) 只能被该类自身所访问,而不能被任何其它类 ( 包括子类 ) 所引用。
      (3)保护访问控制符 protected :用 protected 修饰的成员变量可以被三种类所引用:①该类自身;②同一个包中的其它类;③其它包中
的子类。使用修饰符 protected 的主要作用是允许其它包中的子类来访问父类的特定属性。
      (4) 缺省默认修饰符 :没有访问控制修饰符或用修饰符 default修饰的成员变量可以被该类本身或同一包中的其他类访问。
      (5)静态域修饰符 static :用 static修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内
存区域的公共存储单元,而不是保存在某一个对象的内存区间。该类的任一对象访问它时取到的都是相同的数据;该类的任一对象修改
它时 , 也都是对同一个内存单元进行操作。
      (6)最终域修饰符 final :最终域修饰符 final 是用来定义常量的。一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序
的整个执行过程中都是不变的。
      (7)易失 ( 共享 ) 域修饰符 volatile :易失 ( 共享 ) 域修饰符 volatile是用来说明这个成员变量可能被几个线程所控制和修改。也就是说
在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。通常 volatile 用来修饰接受外部输入的域。
      (8)暂时性域修饰符 transient :暂时性域修饰符 transient 用来定义一个暂时性变量。其特点是:用修饰符transient 限定的暂时性变
量,将指定 Java虚拟机认定该暂时性变量不属于永久状态,以实现不同对象的存档功能。否则,类中所有变量都是对象的永久状态的一
部分,存储对象时必须同时保存这些变量。

原文:https://blog.csdn.net/u012723673/article/details/80613557

 

转载于:https://www.cnblogs.com/Bokeyan/p/10983604.html

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

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

相关文章

etcd与mysql_etcd数据库备份与还原

1. 备份etcd1.1 手动备份数据etcdctl backup --data-dir /var/lib/etcd/default.etcd --backup-dir 备份目录1.2 脚本备份数据使用etcd自带命令etcdctl进行etc备份,脚本如下:#!/bin/bashdate_timedate %Y%m%detcdctl backup --data-dir /var/lib/etcd/de…

iOS https双向配置

只需要服务器验证手机端的童鞋可以点开以下链接【ios 单向配置https】 http://www.cnblogs.com/OC888/p/6560602.html 兜兜转转弄了一个星期,网上的大多数demo都下来过一遍了,各种偏方都试了,终于配置好了双向配置,网上大多数标题…

创业-程序员独自5大思维障碍

程序员是最容易创业的,或者说是创业成本最低的职业。只要有一台电脑和投入自己的时间,就可以写出畅销天下的软件,这是每个程序员的梦想。更何况世界首富常年以来就是程序员出身的比尔盖茨,这也刺激了更多的程序员走上创业之路。 …

leetcode1144. 递减元素使数组呈锯齿状

给你一个整数数组 nums&#xff0c;每次 操作 会从中选择一个元素并 将该元素的值减少 1。 如果符合下列情况之一&#xff0c;则数组 A 就是 锯齿数组&#xff1a; 每个偶数索引对应的元素都大于相邻的元素&#xff0c;即 A[0] > A[1] < A[2] > A[3] < A[4] >…

typescript_清洁架构的TypeScript刺

typescriptby Warren Bell沃伦贝尔(Warren Bell) 清洁架构的TypeScript刺 (A TypeScript Stab at Clean Architecture) 剥洋葱皮的方法不止一种。 (More than one way to skin an onion.) 清洁建筑 (Clean Architecture) There are many videos and articles explaining clean…

星辰小队针对于软件“星遇”的第二次10天冲刺——第10天

日期&#xff1a;2019.6.6 博客期&#xff1a;099 星期四 呃~确实有一部分的功能来不及实现了&#xff0c;针对目前已经实现的功能开始整合&#xff0c;用户界面进行美化&#xff0c;把多于没用的界面和代码类删除掉&#xff0c;制作本软件的叙述性文件和相关文档&#xff0c;根…

mybatis的select、insert、update、delete语句

一、select <!-- 查询学生&#xff0c;根据id --> <select id"getStudent" parameterType"String" resultMap"studentResultMap"> SELECT ST.STUDENT_ID, ST.STUDENT_NAME, ST.STUDENT_SEX, ST.STUDENT_BIRTHDAY, ST.CLASS_I…

appium java简单实例_Appium创建一个Note的实例

近来通过Appium&#xff0c;Robotium等几个框架去了解移动平台自动化测试。Appium官方实例是使用ContactManager.apk&#xff0c;而Robotium使用的是SDK自带的Notepad.apk&#xff0c;为了方便比较&#xff0c;在了解Appium的同时把实例修改成跟Robotium一致的Notepad.apk并记录…

Lync Server 2013无法共享PPT故障排错处理

前段时间帮助朋友看了一个关于Lync Server 2013无法共享PPT的问题&#xff0c;共享PPT时报如下错误&#xff1a; 日志截图如下&#xff1a; 原因如下前端服务器未关联Ofice web Application服务器&#xff0c;关联即可&#xff0c;如下&#xff1a; 关联完成后&#xff0c;如下…

leetcode733. 图像渲染(bfs)

有一幅以二维整数数组表示的图画&#xff0c;每一个整数表示该图画的像素值大小&#xff0c;数值在 0 到 65535 之间。 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值&#xff08;行 &#xff0c;列&#xff09;和一个新的颜色值 newColor&#xff0c;让你重新上色这幅图像…

chrome扩展程序_如何创建Chrome扩展程序

chrome扩展程序by Erika Tan谭咏麟 如何创建Chrome扩展程序 (How to create a Chrome Extension) In this article, I will be teaching you how to make a Chrome Extension of your own. I’m basing it off of lessons learned while creating TalkToMe, a Chrome Extensio…

对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)

7、PASCAL语言&#xff08;一&#xff09;一门通&#xff0c;门门通 在计算机学习问题排行版上&#xff0c;有一个问题绝对是稳居榜首&#xff0c;每次提出都能在各大论坛掀起一股顶帖风暴&#xff0c;而各大网站的每个网络大牛&#xff0c;都会收到无数学院小弟发来弱弱的提问…

leetcode110. 平衡二叉树(递归)

给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a;一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3/ \9 20/ \15 7 返回 true 。代码 /*** Defi…

spring配置文件注解方式引入的两种方式

一、#{beanID[propertiesName]}方式 <bean id"propertyConfigurer" class"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name"fileEncoding" value"utf-8" /><property name&…

vsc 搜索特定代码_特定问题的通用解决方案:何时编写代码以及何时编写代码...

vsc 搜索特定代码by Rina Artstain通过丽娜阿斯特斯坦 特定问题的通用解决方案&#xff1a;何时编写代码以及何时编写代码 (Generic solutions to specific problems: when to write some code and when to just do it) There is a traditional story that tells of a rabbi w…

java手动编译jar包_Maven 手动添加第三方依赖包及编译打包和java命令行编译JAVA文件并使用jar命令打包...

一&#xff0c;实例:新建了一个Maven项目,在eclipse中通过 build path –> configure path….将依赖包添加到工程中后&#xff0c;eclipse不报错了。但是用Maven命令 mvn clean compile 时出错如下&#xff1a;原因是在eclipse中添加了 exteneral jar后&#xff0c;还需要在…

SQL like

确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中&#xff0c;常规字符必须与字符串中指定的字符完全匹配。然而&#xff0c;可使用字符串的任意片段匹配通配符。与使用 和 ! 字符串比较运算符相比&#xff0c;使用通配符可使 LIKE 运…

计划备份mysql数据库

1:mysql是我们使用最多的数据库&#xff0c;如果在日常中正确的对mysql数据进行备份&#xff0c;下面我们就来做这事&#xff0c;通过脚本来实现##########################################################################################################################…

leetcode1333. 餐厅过滤器

给你一个餐馆信息数组 restaurants&#xff0c;其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。 其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false&#xff0c;如果为 true 就意味着你…

3.27下午

转载于:https://www.cnblogs.com/bgd140201228/p/6628194.html