Java中的访问权限控制

当编译一个.java文件时,在.java文件中的每个类都会有一个输出文件,而该输出文件的名称与.java文件中每个类的名称相同,只是多了一个后缀.class。因此,在编译少量.java文件之后,会得到大量的.class文件。Java可运行程序是一组可以打包并压缩为Java文档文件(JAR,使用Java的jar文档生成器)的.class文件。Java解释器负责这些文件的查找,装载和解释。

类库实际上是一组类文件,其中每个文件都有一个public类,以及任意数量的非public类。因此每个文件都有一个构件。如果希望这些构件从属于同一个群组,就可以使用关键字package

例如:假设文件的名称是MyClass.java,这就意味着在该文件中有且只有一个public类,该类的名称必须是MyClass:

package com.mypackage;

public class MyClass {

// …

}

此时假如MyClass类是在某一个类库中的类,当我们想要调用时就必须使用关键字import来使库的名称可用,或者给出完整的名称。

import com.mypackage.MyClass;

public class Thinking_test {

public static void main(String []args){

MyClass m=new MyClass();

}

}

Java访问权限修饰符


在Java中,当我们要访问一个类成员时,为使这种访问合法化有以下四种情况:

  • 1. 被访问类成员被public修饰。

  • 2. 被访问类成员没有任何修饰,访问者和被访问者定义在同一个包内。

  • 3. 通过继承访问其父类的public/protect成员。

  • 4.使用getter/setter或其他类内函数间接地访问类内的私有成员。

分别对应了Java访问权限的不同访问级别:

| | 当前类 | 同一个包的类 | 不同包的子类 | 同一个工程的类 |

| — | — | — | — | — |

| public | √ | √ | √ | √ |

| protected | √ | √ | √ | × |

| default | √ | √ | × | × |

| private | √ | × | × | × |

2.1 public公共访问权限

使用关键字public修饰一个类成员时,代表这个类成员可以被所有代码访问

public:即共有的,是访问权限限制最宽的修饰符。使用关键字public就意味着public之后跟随着的成员声明自己对每个人都是可用的,被public修饰的类、属性、及方法不仅可以跨类访问,而且可以跨包访问。

2.2 protected受保护访问权限

使用关键字protected修饰一个类成员时,代表这个类成员只能被自己的类成员和子类的类成员访问

protected:即保护访问权限,是介于public和private之间的一种访问修饰。被protected修饰的属性及方法只能被类本身的方法和子类访问。一般情况下处理的是继承的概念,通过继承可以利用一个现有类—将其称为基类,然后将新成员添加到该现有类中而不必改变现有类。

2.3 包访问权限

包访问权限没有关键字,通常默认为包访问权限(有时表示为default),包中所有的类都可以对拥有包访问权限的类/类成员进行访问,它们对包外的类来说不可见。

2.4 private私有访问权限

使用关键字private修饰一个类成员时,代表这个类成员所在类的其他成员外,其他任何代码都无权访问

private:即私有访问权限,由于处于同一个包内的其他类是不可以访问private成员的,这相当于自己隔离了自己,使得使用类的客户端程序员无法访问包访问权限成员,这个机制把类设计者负责的部分和类使用者要负责的部分分离开了。

类的访问权限


在Java中,访问权限修饰符可以用于确定库中的那些类对于该库的使用者是可用的。如果希望某个类可以被某个客户端程序员所用,就可以通过public作用于整个类的定义来达到目的,这样做甚至可以控制客户端程序员是否能创建一个该类对象。

在控制类的访问权限时,还有一些额外的限制需要注意:

  • 1.每个编译单元都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出出错信息。

最后希望可以帮助到大家!

千千万万要记得:多刷题!!多刷题!!

之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!

篇幅有限,以下只能截图分享部分的资源!!

(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)

image

(2)刷的算法题(还有左神的算法笔记)

image

(3)面经+真题解析+对应的相关笔记(很全面)

image

(4)视频学习(部分)

ps:当你觉得学不进或者累了的时候,视频是个不错的选择

在这里,最后只一句话:祝大家offer拿到手软!!
68626)]

(3)面经+真题解析+对应的相关笔记(很全面)

[外链图片转存中…(img-0tfONS0r-1716216468627)]

(4)视频学习(部分)

ps:当你觉得学不进或者累了的时候,视频是个不错的选择

在这里,最后只一句话:祝大家offer拿到手软!!

  • 28
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值