简介

修饰符是用于限定类型以及类型成员申明的一种符号,从修饰对象上可以分为类修饰符,方法修饰符,变量修饰符;从功能上可以划分为访问控制修饰符和非访问修饰符。访问修饰符控制访问权限,不同的访问修饰符有不同的权限范围,而非访问修饰符则是提供一些特有功能。

下面我们从功能的角度分别讲解修饰符

访问修饰符

访问修饰符有四种:public,private,protected,default。这里需要注意,我们这里的default和非访问修饰符中的default可不是一个东西!

这里的default指的是默认,什么也不写,在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法

private指的是在仅仅在类内可见,所以也就很好理解,private只能修饰方法,变量,而不能修饰类和接口(毕竟你只能类内访问,你修饰类谁能看得到呢?),修饰方法的时候,一般用于我们在重构代码的时候提取公用代码为内部实现方法,修饰变量的情景相比我们就经常见到了,由于Java的封装特性,我们在定义一个类的时候,经常会把该类的属性定义为private,通过getorset方法来访问这些变量。

public在我们日常中使用的比较多,我们经常会把类声明为public,声明成public类,接口,变量,方法可以被任何类访问,这里需要注意一个java文件中只能包含一个public的类,而且main方法必须用public修饰,否则无法被Java的解释器识别。

protected我们在日常的开发中使用不多,只能声明在变量,方法,内部类上,它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。

  • 基类的 protected 成员是包内可见的,并且对子类可见
  • 若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来protected方法,而不能访问基类实例protected方法。

⬆ 大概就是上图酱紫,凑合着看,画图功力贼差:)

非访问修饰符

default

这里的default是jdk 8中的新特性,指的是接口方法的默认实现,在JDK 8 之前接口的方法是不能有实现的,而JDK 8 后default修饰的方法可以在接口中进行默认的实现:

public interface Test {
default void hello(){
System.out.println("Hello");
}
}

就像酱紫~

static

static是面试的一个热点,static的意思是静态,可用于修饰变量和方法,切记一点,static是属于的,而非是属于对象的,static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

而static关键字的基本作用就是:方便在没有创建对象的情况下来进行调用(方法/变量)。

这里需要注意,由于static修饰的方法和变量是属于类的,不需要依靠对象才能使用,所以他不能访问非static修饰的方法和变量,因为这些变量和方法是必须依托于对象才能访问!但是非static的方法可以访问static的方法或变量,因为当你创建对象的时候,类必定已经加载,所以可以访问的到。

这里需要注意一点:static不可修饰局部变量

final

final关键字我们在日常中也会经常用到,通常用的最多的场景就是搭配static一起来使用去定义我们系统的常量:

public static final String AUTHOR = "viyoung"

除了修饰变量,还可以用于修饰类和方法,被final修饰的类无法被继承,被final修饰的方法可以被继承,但是无法进行修改

abstract

abstract可以作用在类和方法上,当作用在类上时,说明这个类是一个抽象类,需要去继承扩展,无法直接实例化一个对象,当作用在方法上的时候,说明这个方法需要扩展,被abstract修饰的方法以分号结尾,没有实现,而且无法被finalstatic修饰(一个需要被继承且没有实现的方法为毛要用这俩修饰,不是自己打自己脸吗

Java Grammar(三):修饰符的更多相关文章

  1. 关于Java的权限修饰符(public,private,protected,默认friendly)

    以前对访问修饰符总是模棱两可,让自己仔细解释也是经常说不很清楚.这次要彻底的搞清楚. 现在总结如下: 一.概括总结 各个访问修饰符对不同包及其子类,非子类的访问权限 Java访问权限修饰符包含四个:p ...

  2. Java中final修饰符深入研究

    一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...

  3. Java中的 修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...

  4. 深入理解Java的protected修饰符

    其实Java的protected修饰符,权限定义的很微妙,大致有以下几种: (1)protected控制符用于修饰方法和成员变量: (2)一个类的protected方法或成员变量,在包外是不能通过该类 ...

  5. java访问权限修饰符

    作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × ja ...

  6. Java中各种修饰符与访问修饰符

    Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...

  7. Java中访问修饰符public、private、protecte、default

    Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...

  8. java中的修饰符和基本数据类型

    1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...

  9. 对于Java中权限修饰符的理解

    老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...

  10. java 复习整理(三 修饰符)

    访问控制修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java支持4种不同的访问权限. 默认的,也称为default,在同一包内可见,不使用任何修饰符. 私有的,以pr ...

随机推荐

  1. CAD安装错误1625:系统策略禁止这个安装,请与系统管理员联系。

    在安装Autodesk CAD/3DMAX/Maya/Revit/Inventor等的时候,出现“安装错误1625:系统策略禁止这个安装,请与系统管理员联系.”,或是Error 1625,同时还会提示 ...

  2. text-align和vertical-align

    1.text-align(水平对齐)text-align样式使元素在其定界区域内水平对齐,其取值可以是left.right.center或justify.justify使元素两端对齐.2.vertic ...

  3. Python-SSH批量登陆并执行命令

    Python-SSH批量登陆并执行命令 #!/usr/bin/env python #-*- coding:utf-8 -*- import paramiko from time import cti ...

  4. 13.1 CentOS系统启动流程介绍

    CentOS系统启动流程介绍 本章我们将学习 Linux 启动流程和内核模块管理相关的内容.通过本章我们将学习如下内容: Linux 系统的组成及特点 CentOS 系统的启动流程 开机启动成 gru ...

  5. 用两个栈实现一个队列(C++)

    分析 栈:后进先出 队列:先进先出 要使用两个栈实现队列(先进先出),主要思路是 1.插入一个元素:直接将元素插入stack1即可. 2.删除一个元素:当stack2不为空时 ,直接弹出栈顶元素,当s ...

  6. CF-1111C-Creative Snap

    前两天过年,所以两天前的比赛题目现在才来回顾. 这题是一个最平常的递归,加一个剪枝.题目说如果一段距离没有复仇者看守,消耗的能量为A,A一定是正整数.由此可知对于没有复仇者看守的段,不拆一定比拆成两半 ...

  7. react全家桶从0搭建一个完整的react项目(react-router4、redux、redux-saga)

    react全家桶从0到1(最新) 本文从零开始,逐步讲解如何用react全家桶搭建一个完整的react项目.文中针对react.webpack.babel.react-route.redux.redu ...

  8. CPU踩点图

    CPU占比探测用js来检查当前系统cpu的占用比例,通过 setTimeout 的方式探测 CPU 的大小,这样可以实现网页游戏中动画等耗时操作的自动调节.这个原理是很多人都知道的,就是用JS来踩点. ...

  9. 为何银行愿为收购supercell做无权追索融资?

    无追索权融资又称纯粹的项目融资,是指贷款人对项目主办人没有任何追索权的项目融资.简单来说,这是一种项目失败,也无法追尝的承诺,一般发生在石油.天然气.煤炭.铜.铝等矿产资源开发等相对较为保值的项目融资 ...

  10. 【系统篇】Archlinux系统安装

    本教程为最新安装Linux的教程,想看更详细可以到我B站主页看视频教程 ArchLinux安装配置手册[系统篇] 本教程参考自 https://wiki.archlinux.org/index.php ...