IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> JavaSE-基础-4-Java修饰符类型(version1) -> 正文阅读

[PHP知识库]JavaSE-基础-4-Java修饰符类型(version1)

Java修饰符类型

权限访问修饰符

private(私有的)自己专属:意味着被声明的成员或方法,除了本类,其他任何类都无法访问。

default(默认的)包访问权限:即不写任何关键字,就意味着相同包内的其他类(包括子类)可以访问,包外都不可以访问。

protected(受保护的)继承访问权限:使用protected关键字,就意味着被声明的成员或方法,在子类以及相同包内的其他类都可以访问的。

public(公共的)接口访问权限:使用public关键字,就意味着被声明的成员或方法对所有类都是可以访问的。

在这里插入图片描述

private(私有的)自己专属

声明为private的方法,变量和构造函数只能在声明的类本身中访问
类和接口不能声明为:private

如果类中存在公共getter方法,则可以在类中将变量声明为private。使用private修饰符是对象封装自身并隐藏来自外部世界的数据的主要方式(即私有变量,公共方法)

default(默认的)包访问权限

接口中的字段隐式为public static final,接口中的方法默认为public。

class Order{
    String a = "hello";

    boolean processOrder() {
       return true;
    }
}

protected(受保护的)继承访问权限

受保护的访问修饰符不能应用于类和接口方法,字段可以声明为protected,但是接口中的方法和字段不能声明为protected。受保护的访问使子类有机会使用辅助方法或变量,同时防止非相关类尝试使用它。

public(公共的)接口访问权限

如果尝试访问的公共类位于不同的包中,则仍需要导入公共类。 由于类继承,类的所有公共方法和变量都由其子类继承。
应用程序的main()方法必须声明为public。否则Java解释器无法调用它来运行该类。

访问控制和继承

强制执行以下继承方法规则 :

  • 在超类中声明为public的方法也必须在所有子类中都是public。
  • 在超类中声明为protected的方法必须在子类中也要声明为:protected或public; 不能声明为private。
  • 声明为private的方法根本不能被继承,因此没有规则。

非访问修饰符

  • static修饰符用于创建类方法和变量。
  • final修饰符用于完成类,方法和变量的实现。
  • abstract修饰符用于创建抽象类和方法。
  • synchronized和volatile修饰符,用于线程。

static修饰符

局部变量不能声明为static。

final修饰符

final变量只能显式地初始化一次

public class Test {
   final int value = 10;

   // 以下是声明常量的示例:
   public static final int BOXWIDTH = 6;
   static final String TITLE = "Manager";

   public void changeValue() {
      value = 12;   // 会出错,不能重新赋值
   }
}

任何子类都不能覆盖final方法。 如前所述,final修饰符可防止在子类中修改方法。
声明final方法的主要目的是不让其它人改变方法的内容。
使用声明为final的类的主要目的是防止类被子类化。 如果一个类被标记为final,那么这个类不能被其它类继承。

abstract饰符

抽象(abstract)类不能实例化。如果一个类声明为抽象(abstract),那么唯一的目的是扩展该类。
一个类不能是同时是abstract和final(因为final类不能被扩展)。 如果一个类包含抽象方法,那么该类应该被声明为abstract。 否则,将抛出编译错误。
抽象类可以包含抽象方法以及普通方法。

抽象方法是在没有任何实现的情况下声明的方法。 方法体(实现)由子类提供。 抽象方法永远不会是最终的或严格的。
扩展抽象类的任何类都必须实现超类的所有抽象方法,除非子类也是抽象类,那就子子类实现。

public abstract class SuperClass {
   abstract void m();   // 抽象方法
}

class SubClass extends SuperClass {
   // 实现抽象方法
   void m() {
      // 实现代码.........
   }
}

synchronized修饰符

synchronized关键字用于指示一次只能访问一个方法的方法。synchronized修饰符可以应用于四个访问级别修饰符中的任何一个。

transient修饰符

下次更新,头脑有些炸裂…

volatile修饰符

答疑扩展:

一、为什么不能用private修饰Java外部类?
因为如果使用private修饰Java外部类,那么这个类不能创建实例,这个类的属性和方法不能被访问,那么创建这个类毫无意义,所以不能使用private修饰Java外部类。

二、为什么不能用protected修饰Java外部类?
举个例子,如果类A用protected修饰,与类A不同包的类B想要访问类A的话,类B就必须是继承类A的(或者说类B必须为类A的子类),但是类B继承类A的前提又是类B可以访问到类A,有点绕对吧,仔细想想会发现这里是冲突的,其实这就说明了为什么不能用protected来修饰外部类。再说,protected是用来表示在继承关系中的访问权限的,在同一个包和子类中都可以访问,因为继承就是为了拥有父类的属性和方法,所以protected是用于修饰类的方法和属性的,也就是说,我想要这个类的属性和方法可以被任何子类继承,我就用protected。

如有错误/疑问,欢迎指正/留言!
参考文献/资料:
百度百科
Java外部类不能用private和protected修饰
Java访问修饰符
Java非访问修饰符

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 09:51:10  更:2021-09-18 09:51:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:09:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码