java修饰符

java修饰符

一、访问修饰符

1.1 private访问控制符

当前类访问权限

如果一个成员方法或成员变量名前 使用了 private 访问控制符,那么这个成员只能在这个类的内部使用。

1.2 default 访问控制符

包访问权限(默认)

default访问控制的成员或外部类可以被相同包下的其他类访问;default不能修饰变量。

1.3 protected 访问控制符

子类访问权限

基类的 protected 成员是包内可见的,并且对子类可见;

若子类与基类不在同一包中,那么在子类中,子类实例可以访问其从基类继承而来的protected方法,而不能访问基类实例的protected方法。

1.4 public 访问控制符

公共访问权限

可以 被所有的类访问,不管访问类与被访问类是否在同一个包中。

二、非访问修饰符

2.1 static修饰符

用来修饰类方法和类变量。static的真正作用就是用于区分Field、方法、内部类、初始化块这四种成员到底属于类本身还是属于实例。

2.1.1特点

  • static修饰的变量属于类变量,多个对象共享同一个static变量;
  • static修饰的方法属于静态方法,静态方法不能重写(不属于某个对象),不能使用this关键字(无法指向合适的对象);
  • 可以直接通过“类名 . 属性/方法”的方式访问静态属性和静态方法,不需要创建类的对象;
  • 静态成员不能直接访问非静态成员。静态成员属于类,不需要生成对象就存在了,而非静态需要生成对象才产生. 所以静态成员不能直接访问

2.2 final修饰符

意思是最终的、不可修改的,最见不得变化,用来修饰类、方法和变量

2.2.1特点

  • final修饰的类不能被继承,final类中的所有成员方法都会被隐式地指定为final方法;
  • final修饰的方法不能被重写;
  • final修饰的变量是常量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

2.3 abstract修饰符

abstract 修饰符,用来创建抽象类和抽象方法

2.3.1特点

  • abstract修饰的类是抽象类,抽象类可以继承别的普通类或抽象类,也可以实现接口,但抽象类不可以实例化;
  • abstract修饰的方法是抽象方法,抽象方法没有方法体;
  • 抽象类不一定有抽象方法,有抽象方法的类必须是抽象类;

三、jdk1.8的接口中default修饰的方法

接口里的变量默认隐含类型是public static final

方法默认类型是public abstract

在1.8中,对已有的接口,如果想对接口增加一个新方法,那么需要对实现该接口的所有类进行修改,如果接口实的现类很多,就会带来

很大的工作量,而且还很容易破坏以前的代码,带来一些问题。如果把新的方法定义为default方法,就可以避免对其他实现类的修改。

新增了default方法,如果方法前面加上该修饰符,则实现类并不是必须实现该方法。并且在接口中,还可以直接编写该方法的方法体。

当然子类也可以重写该方法。

注意:

  1. 当多个接口中有同一个用default修饰的方法时,就无法判断到底实现的是哪个接口的方法。这种情况下,就必须重写方法

  2. 一个类继承的父类和实现的接口中都有同一个方法,而这个类又没有重写时,实现的是父类的方法,而不是接口中的方法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115171.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android 代码混淆配置总结[通俗易懂]

    Android 代码混淆配置总结[通俗易懂]一、前言为何需要混淆呢?简单的说,就是将原本正常的项目文件,对其类,方法,字段,重新命名,a,b,c,d,e,f…之类的字母,达到混淆代码的目的,这样反编译出来,结构乱糟糟的,看了也头大。另外说明

    2022年7月1日
    33
  • 使用VMware安装centos7并配置网络

    使用VMware安装centos7并配置网络准备工作:1.VM虚拟机(本文使用VMware14.1.2)2.Centos7安装包(https://www.centos.org/download/)centos官网提供多个版本下载,一般使用标准的DVD版安装版,大约4.2G。也可以使用mini版,后续自己安装第三方软件。各版本区别:https://wiki.centos.org/Manuals/ReleaseNotes/Cent…

    2022年6月6日
    33
  • 40款帮助你加薪的IDEA神器插件![通俗易懂]

    写在前面的话:大家好,我是全栈小刘,一名零零后的编程爱好者。从初中开始编程,对编程有独特情怀,热爱技术,目前已有五年的编程经验,做过许许多多有意思的项目,这篇博客,算是对自己学习的一个总结,算是一份笔记,如果你对Java全栈感兴趣可以关注我的动态一起学习1.01的365次方=37.78343433289>>>10.99的365次方=0.02551796445…

    2022年4月17日
    101
  • Redfish协议测试工具–Postman

    Redfish协议测试工具–Postman1 工具和资料获取 2 简单使用说明 1 GET 类举例 2 PATCH 类举例 3 常见命令 1 工具和资料获取 Postman 工具获取服务器 Redfish 接口说明文档使用前必读接口文档中 适用的产品 查看自己的服务器是否支持此协议 2 简单使用说明 1 GET 类举例查看系统信息 SystemOvervi 查看文档 实操 2 PATCH 类举例首先获取指定用户信息 查看文档 要有 Etag 获取方式是通

    2025年9月24日
    3
  • vue-router 报错:Navigation cancelled from“/…“ to “/…“ with a new navigation.

    vue-router 报错:Navigation cancelled from“/…“ to “/…“ with a new navigation.vue-router@3.0版本及以上回调形式已经改成promiseapi的形式了,返回的是一个promise,如果路由地址跳转相同,且没有捕获到错误,控制台始终会出现如图所示的警告(注:3.0以下版本则不会出现以下警告!!!,因路由回调问题…)*怎么解决呢?方案一:安装vue-router3.0以下版本:先卸载3.0以上版本然后再安装旧版本npminstallvue-router@2.8.0-S方案二:针对于路由跳转相同的地址添加catch捕获一下异常:this.$router.

    2022年7月26日
    124
  • 【Spark】Spark的Shuffle机制「建议收藏」

    【Spark】Spark的Shuffle机制

    2022年1月31日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号