Java面向对象进阶6——权限修饰符(含源码阅读)

简介: 在上面举例的代码中,brand , colour两个变量是没用访问修饰符的,但是可以在同一个包的测试类中使用是不会报错的,但是如果使用别的包中的类就会报错

一、前言


本文主要是讲述有关Java面向对象中的权限修饰符知识点


二、权限修饰符


1.权限修饰符的分类


1.1 private


私有的访问修饰符,被private修饰的变量、方法以及构造方法之能被所属类访问,接口和类不能声明为private


我们来用IDEA实现代码,发现会报错


public class Phone {
    String brand , colour;
    double price;
    private int ram;
}
public class PhoneTest {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.brand = "华为";
        p.colour = "玫瑰金";
        p.price = 19999.99;
        p.ram = 512;
  }
}

eb5d17f3bfb14d438d8548171181965c.png


我们用 Alt + Enter 来查看IDEA提供给我们的解决方案,发现private修饰符被删掉后代码编译不报错


9ac971d6267b4ba592db05ebbefc932b.png

4f80c3f929d6486fa61f42b3f15f4137.png


如果非得要加private修饰符,还想使用。。。也可以,只是会增加许多代码量,代码贴在下方了,各位读者可以了解一下(非常不建议使用!!!)


package test1;
public class Phone {
    String brand , colour;
    double price;
    private int ram;
    public void setRam(int ram){
        this.ram = ram;
    }
    public int  getRam(){
        return ram;
    }
}
package test1;
public class PhoneTest {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.brand = "华为";
        p.colour = "玫瑰金";
        p.price = 19999.99;
        p.setRam(512);
        System.out.println(p.getRam());
    }
}


1.2默认


默认,也叫无访问修饰符或默认访问修饰符,可以被本类或者同一个包内其他类访问


在上面举例的代码中,brand , colour两个变量是没用访问修饰符的,但是可以在同一个包的测试类中使用是不会报错的,但是如果使用别的包中的类就会报错


67a9e62024c04bd5beb5ec2e269b1048.png


1.3 protected


受保护的,成员变量和成员方法不能声明为 protected,并且 protected 不能用来修饰类和接口


1.4 public


公共的,被声明为public的类、方法、构造方法和接口能够被任何其他类访问,如果要访问的public类分布在不同包中,要用import关键字导入包


如果对于包的知识点不熟悉的话,请看上一篇文章 ⬇


Java面向对象5——包和final(含源码阅读)


2.源码阅读


我们使用 Alt+N 搜索一下ArrayList,并选择java.util包下的


02563498909b4a8c97e3940c35e52d83.png


查看add方法


524a358ad8d54214a2f11cae7fe8d921.png


查看扩容方法


16378efee6ec47d5a2e224c337494095.png


不难看出,方法是私有的,不能被修改


3.使用规则


  • 实际开发中,只有private和public


  • 成员变量要私有


  • 方法要公开


  • 如果方法中代码是抽取其他方法中共性代码,方法也要私有


4.总结



public
protected 默认 private
同一类中
同一包中的类
不同包的子类
不同包中的无关类


三、小结


权限修饰符在编写代码时很常用,所以搞清楚其用法对于编写代码很重要 ,如果有任何问题欢迎评论留言

相关文章
|
25天前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
60 7
|
1月前
|
数据采集 人工智能 Java
Java产科专科电子病历系统源码
产科专科电子病历系统,全结构化设计,实现产科专科电子病历与院内HIS、LIS、PACS信息系统、区域妇幼信息平台的三级互联互通,系统由门诊系统、住院系统、数据统计模块三部分组成,它管理了孕妇从怀孕开始到生产结束42天一系列医院保健服务信息。
34 4
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
85 2
|
17天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
89 13
|
1月前
|
缓存 监控 Java
Java线程池提交任务流程底层源码与源码解析
【11月更文挑战第30天】嘿,各位技术爱好者们,今天咱们来聊聊Java线程池提交任务的底层源码与源码解析。作为一个资深的Java开发者,我相信你一定对线程池并不陌生。线程池作为并发编程中的一大利器,其重要性不言而喻。今天,我将以对话的方式,带你一步步深入线程池的奥秘,从概述到功能点,再到背景和业务点,最后到底层原理和示例,让你对线程池有一个全新的认识。
56 12
|
25天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
27天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
22 1
|
1月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
25 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
1月前
|
人工智能 监控 数据可视化
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
48 3
|
1月前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
112 4