专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java访问权限修饰符,基础学习

Java访问权限修饰符,基础学习

更新时间:2020-08-31 16:23:18 来源:动力节点 浏览2247次

可能大部分人只知道访问权限修饰符的访问范围,却不太清楚具体的使用情况,今天我来为大家梳理一下。

Java的访问权限修饰符有:public,private,protected,默认不写,这四种。主要说以下两个方面:

一、可访问的范围

java访问权限修饰符

1.public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用。

2.private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

3.protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。

4.friendly修饰的类叫友元类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中,就是说在一个包内的类互为友元类。

注释:

1、友元类就是默认不写的情况。

2、同包是指类中的backage名称相同。并无父子包一说。

二、修饰情况

类:

public将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。

friendly默认的修饰符,只有在相同包中的对象才能使用这样的类。

成员变量:

public(公共访问修饰符)

private(私有访问修饰符)指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问。

protected(保护访问修饰符)指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变量。

friendly,在同一个包中的类可以访问,其他包中的类不能访问。

方法:

public(公共修饰符)

private(私有修饰符)指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类)

protected(保护访问修饰符)指定该方法可以被它的类和子类进行访问。

friendly,在同一个包中的类可以访问,其他包中的类不能访问。

总结:

1、以package为前提:分为两种情况,两个类的package相同时是可以访问到类的,package不同时就看是不是public或者是不是子类。

2、以类为准则:这些修饰符不管是作用在类、成员变量、方法上,都是相对于类来说的;也就是说成员和方法的访问必须要先能够访问到类。

升华总结:

1、背景:这就涉及类的使用了,你想一个类中真正启作用的是不是方法,方法中要使用的自己类中的成员变量和方法,不管你访问修饰符是什么都

能够访问自身的成员变量和方法对不对。但是你想访问其他的类就涉及到访问权限的问题了对吧!由此得出访问权限修饰符是为类而设计

的,你想访问类,就得先找到类,就出现了package。package的值就代表你这个类的位置。所以关键点出现在package和类的上面。

2、类的访问场景:A类访问B类,只有A类能够访问B类时才能访问其中的方法,顺序都是从左到右,如下图所示

java访问权限修饰符

3、类的访问修饰符规则:

1;请思考一下,为什么上面的访问要提及子类呢?为什么子类可以访问而父类不能访问呢?其实不难发现,你想访问到该类你必须先找到他吧!

也不难看出他需要所访问类的地址,这就出现了import关键字,他就是用来指明你所需要访问的类的地址的。因为子类继承了父类,import

了父类的地址,所以能够访问。其他也就不用多说你也知道,如果想访问一个类,很简单import就行了对吧!如果是在同一个包自然不用import。

也就说明了访问类的真正规则是在package和import这两个关键字上的,同包就package,不同包就import。

2是不是所有的类都可以import呢?你不难发现类的访问修饰符就两种public和默认不写,而默认不写也就是友元类。他是只能在同包中使用,

不同包是不能使用的,不同包不能使用也就意味着不能import,所以也不能被其他包的类所继承。

4、成员变量和方法的访问修饰符规则:

这个访问都是能够访问到另一个类才有效,所以以下是能够访问到另一个类情况:

同包是除了private修饰的成员变量和方法,其他都可以访问。主要说一下不同包的情况,对于默认不写的情况都是不可访问的,这也很好理解

他需要的包相同,protected的修饰符是需要继承才能访问。

精简总结:

public开放所有,

private不能跨类访问,

friendly不能跨包访问,

protected跨包需要继承才能访问。

最简总结:默认不写不跨包,保护跨包要继承。

以上就是动力节点java培训机构的小编针对“Java访问权限修饰符,基础学习”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>