【Java SE】 详解java访问限定符

这篇具有很好参考价值的文章主要介绍了【Java SE】 详解java访问限定符。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Java SE】 详解java访问限定符,java,java,开发语言,ide,mysql,数据库,人工智能,机器学习

访问限定符

Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:
【Java SE】 详解java访问限定符,java,java,开发语言,ide,mysql,数据库,人工智能,机器学习
实际只有三种访问限定符,default的意思是默认情况下,不加这三种访问限定符的时候。
1.private:只能在自己类种被访问,出了自己类就无法被直接访问,但可以间接被访问。

class Student {
    private String name;
}
public class Main {
    public static void main(String[] args) {
        Student student = new Student();
        student.name;
    }

}

我定义一个Student类,在Main类中实例化Student类的对象,然后去访问Student类中的成员变量name,显示编译错误,通过这个现象推出一个想法说明由private修饰的成员变量,在另一个类中无法被直接访问。

为了更可以证实这个推论,我们在Student自己类中实例化对象,然后再去访问一下。

class Student {
    private String name;
    Student student = new Student();
    public void fun() {
        student.name = "x";
    }
}

结论:由private修饰的成员变量只能在自己类中被直接访问,在其他类中是不可以被直接访问的,如果要访问成员变量只能通过间接的方法去访问。

那么怎么用这种方法去访问,可以去看我的上一篇文章。

2.不加这三种任何一个限定符(default):这种情况只能在同在一个包中访问。

//在Deom包中
public class Animal {
    String name;

    public static void main(String[] args) {
        
    }
}
//在Deom中不同类
public class Dog {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.name = "小黄";
    }

        }
        //不在Deom包中,在Deom1包中的类
        public class Cat {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.name;
    }
}

不在同一个包中,由protected修饰的成员变量是不能被访问的。

3.protected:在不同包中的非子类是不能被访问的。

//在Deom包中的Animal类由protected修饰的成员变量
public class Animal {
    protected String name;

    public static void main(String[] args) {

    }
}
//在同一个包中,不同类中:
public class Dog {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.name = "小黄";
    }

        }
 //在不同包中,但是Deom包Animal类的子类:
 package Deom1;

import Deom.Animal;
public class Cat extends Animal{
    public void fun() {
        Animal animal = new Animal();
        super.name = "旺财";//要通过super关键字去访问,而且不能在static关键字修饰的方法中用这个super这个关键字
    }
    public static void main(String[] args) {
    }
    //不在同一个包中而且也不是Deom包Animal类的子类
    public class Student {
    public void func() {
        Animal animal = new Animal();
        animal.name;
    }

    public static void main(String[] args) {

    }
}
   

不在同一个包,而且也不是子类,那么由protected修饰的成员变量就不能被访问。

4.public:这个限定符是不管你是不是在同一个包中是不是子类,都会不重要,因为都可以被访问。

【结尾】:
上一篇文章:【Java SE】 封装 || 包 || static关键字 || 代码块
下一篇文章:【Java SE】如何解读Java的继承和多态的特性?
希望大家可以给我一个一键三连,多多支持我的创作,感谢大家。🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹文章来源地址https://www.toymoban.com/news/detail-757125.html

到了这里,关于【Java SE】 详解java访问限定符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 由浅到深认识Java语言(9):Eclipse IDE简介

    该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置

    2024年03月25日
    浏览(45)
  • 编程开发8大语言详解,为什么Java是我最推荐的?

    很多没有接触过编程语言的同学,都会觉得编程开发特别高端和神奇,担心理解不了更担心学不会。 当然,也有人会认为,你既然是做编程的,那么你应该什么都会,什么软件的开发都能完成,这是平哥经常听到的两种声音。 在此,平哥需要给大家科普一下, 编程确实改变

    2024年02月05日
    浏览(73)
  • 【Java】IDE集成开发环境工具IntelliJ安装和使用

    欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《Java》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平有限

    2024年01月18日
    浏览(74)
  • Java之IDE开发工具eclipse下载安装使用详细教程

    熟练eclipse的使用 Eclipse是一个IDE(集成开发环境),集成了代码编写功能,分析功能,编译功能,调试功能等一体化的开发软件。 免费 Java语言编写 免安装 扩展性强 下载和安装 下载地址:http://eclipse.org 绿色版 解压就可以使用(Eclipse) 版本代号 平台版本 需要的JDK最低版本 Gal

    2024年04月14日
    浏览(105)
  • 深入理解Java泛型、协变逆变、泛型通配符、自限定

    重写了之前博客写的泛型相关内容,全部整合到这一篇文章里了,把坑都填了,后续不再纠结这些问题了。本文深度总结了函数式思想、泛型对在Java中的应用,解答了许多比较难的问题。 纯函数 协变 逆变 泛型通配符 PECS法则 自限定 Java8 引入了函数式接口,从此方法传参可

    2023年04月20日
    浏览(55)
  • JAVA SE基础《一》----JAVA入门

    初识Java 1.Java背景知识 java是美国 sun公司(Stanford University Network) 在1995年推出的一门计算机 高级编程语言 。 Java早期称为Oak(橡树),后期改名为Java。 Java之父: 詹姆斯·高斯林(James Gosling) 。 2009年sun公司被 Oracle(甲骨文) 公司收购。 2.Java能做什么? 桌面应用开发:各

    2024年02月09日
    浏览(52)
  • 【Java SE】继承

    学习完了类之后,我们将继续学习一个Java中的重点内容 “继承” 举例:    在Cat类中和Dog类中我们发现有很多一样的地方,这样写太浪费空间和内存了 我们可以把它相同的地方都用一个类来表示,并且使用它1.2 继承概念  那能否将这些共性抽取呢?面向对象思想中提出了

    2024年02月05日
    浏览(44)
  • Java SE 面试题

    请简要介绍 Java SE。 Java SE (Java Standard Edition) 是 Java 平台的基础版本,提供 Java 开发所需的所有核心功能。它包括 Java 语言规范、Java 虚拟机规范和 Java 类库。 请解释 Java 的垃圾回收机制。 Java 的垃圾回收机制是自动内存管理的一部分,用于在堆内存中自动回收不再使用的对

    2024年02月01日
    浏览(54)
  • Java Springboot设置MySQL的ssl连接访问

    一、需求背景 需要修改应用程序通过SSL连接mysql数据库。 环境配置 数据库:MySQL 8.0.21 (enabled SSL) Java版本:openjdk version \\\"1.8.0_332\\\" Springboot版本:v2.5.3 二、生成证书 下面是MySQL数据库服务端提供三个原始文件  我们需要通过jdk自带的keytool将文件转换成java可以使用的文件 生成

    2024年02月15日
    浏览(34)
  • 【Java SE】| BigDecimal妙用

    在使用浮点数(float / double)进行运算时,会发生精度丢失的风险(因为无限循环小数无法使用二进制来精确表示,会被截断,精度丢失)。所以我们要用到 BigDecimal ,其可以实现对浮点数的运算,不会造成精度丢失 避免使用float或double类型作为BigDecimal的构造参数,因为这样

    2024年02月07日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包