码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java面向对象进阶6——权限修饰符(含源码阅读)


    Java面向对象进阶6

    • 一、前言
    • 二、权限修饰符
      • 1.权限修饰符的分类
        • 1.1 private
        • 1.2默认
        • 1.3 protected
        • 1.4 public
      • 2.源码阅读
      • 3.使用规则
      • 4.总结
    • 三、小结

    一、前言

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

    二、权限修饰符

    1.权限修饰符的分类

    1.1 private

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

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

    public class Phone {
        String brand , colour;
        double price;
        private int ram;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    public class PhoneTest {
        public static void main(String[] args) {
            Phone p = new Phone();
            p.brand = "华为";
            p.colour = "玫瑰金";
            p.price = 19999.99;
            p.ram = 512;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

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

    在这里插入图片描述
    在这里插入图片描述

    如果非得要加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;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    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
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    1.2默认

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

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

    1.3 protected

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

    1.4 public

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

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

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

    2.源码阅读

    我们使用 Alt+N 搜索一下ArrayList,并选择java.util包下的
    在这里插入图片描述

    查看add方法

    在这里插入图片描述

    查看扩容方法

    在这里插入图片描述
    不难看出,方法是私有的,不能被修改

    3.使用规则

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

    • 成员变量要私有

    • 方法要公开

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

    4.总结

    publicprotected默认private
    同一类中√√√√
    同一包中的类√√√
    不同包的子类√√
    不同包中的无关类√

    三、小结

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

  • 相关阅读:
    vue2+element UI 树形只有两级, 第一级只能上下移动,第二级不能成为第一级,只能拖到别的第一级和在同一级排序
    一星级挑战:14 数字加密
    Android Studio配置
    Vue3的组合式API介绍,和Vue2生命周期函数的变化
    Pretrain-finetune、Prompting、Instruct-tuning训练方法的区别
    git学习
    【力扣刷题】Day09——字符串专题
    Unity SKFramework框架(二十五)、RSA算法加密、签名工具 RSA Crypto
    C++基础之常量与指针
    openpnp - use STM32 arduino on SchultzController
  • 原文地址:https://blog.csdn.net/Alita233_/article/details/126511146
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号