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
同一类中
同一包中的类
不同包的子类
不同包中的无关类


三、小结


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

相关文章
|
3天前
|
数据采集 监控 前端开发
JAVA公立医院绩效考核管理系统源码-对接HIS数据
在医院的工作和管理上,院领导需要对院内工作人员的工作情况进行了解、评价和监控。 下面将对医院绩效管理系统的HIS数据流程加以阐述。
11 1
JAVA公立医院绩效考核管理系统源码-对接HIS数据
|
2天前
|
存储 安全 Java
Java基础系列1:Java面向对象
Java基础系列1:Java面向对象
|
2天前
|
Java 数据安全/隐私保护
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
10 0
|
2天前
|
存储 Java
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
Java基础手册(标识符 关键字 字面值 变量 数据类型 字符编码 运算符 控制语句 方法及方法重载和递归 面向对象与面向过程)
7 0
|
2天前
|
Java 关系型数据库
Java中的面向对象设计原则与实践
Java中的面向对象设计原则与实践
|
3天前
|
移动开发 小程序 关系型数据库
java+ IDEA+ Uniapp+ mysql医院3D智能导诊系统源码
这是一个基于Java、IDEA、Uniapp和MySQL的医院3D智能导诊系统,采用Springboot后端框架和Redis、Mybatis Plus、RocketMQ等技术。系统通过对话式交互,精准推荐就诊科室,解决患者挂号困扰。它还具备智能预问诊功能,提升诊疗效率和准确性,确保医生能快速了解患者详情。此系统还支持小程序和H5,方便患者使用。
9 0
|
3天前
|
安全 算法 Java
java多线程面试题2019整理
java多线程面试题2019整理
|
1天前
|
Java 数据处理 调度
Java多线程编程入门指南
Java多线程编程入门指南
|
2天前
|
监控 安全 算法
如何有效地处理Java中的多线程
如何有效地处理Java中的多线程
|
3天前
|
Java 调度
Java多线程编程与并发控制策略
Java多线程编程与并发控制策略