Java基础--访问权限控制符
今天我们来探讨一下访问权限控制符。
使用场景一:攻城狮A编写了ClassA,但是他不想所有的攻城狮都可以使用该类,应该怎么办?
使用场景二:攻城狮A编写了ClassA,里面有func1方法和func2方法,但是他只想提供func1给别的攻城狮使用,应该怎么办?
此时,应该使用Java当中的访问权限控制符:1、默认访问权限 2、public 3、private 4、protected
注意,上述四种访问权限,只有默认访问权限和public能够用来修饰类。修饰类的变量和方法四种权限都可以。(本处所说的类针对的是外部类,不包括内部类)
1、修饰类
默认访问权限:表示在同一包中其他类都可以访问该类。
public:表示任何一个类都可以访问该类。
例子1:
People.java
package test1;
class People {
//默认访问控制符
String name;
public People(String name) {
this.name = name;
}
public String getName(){
return this.name;
}
}
Main.java
package test1;
public class Main {
public static void main(String[] args) {
People p = new People("攻城狮");
System.out.println(p.getName());
}
}
实验结果:

可以正常输出结果[攻城狮]。因为People类使用的是默认访问修饰符,在同一个包里面可以访问,而Main.java与People.java在同一包,所以能访问。
例子2:
修改Main.java:把Main类放置在别的包中,会有什么情况出现呢?

line2提示:People类不可见,即找不到的意思。People.java使用默认访问修饰符,只能提供给同包的类来访问,而现在Main.java放在了test2包中,而People.java是test1包的,所以在不同包是不能放到默认访问修饰符类的。
2、修饰类的方法和变量
默认访问权限(包访问权限):如果类的变量和方法使用默认访问权限,就意味着只能在同包的类中可以访问到类的方法和变量,而不同包的类则不能访问类的方法和变量。
private:如果一个类的方法和变量使用privagte来修饰,则只能提供给本类访问,其他类不能访问。
protected:如果一个类的方法和变量使用protected来修饰,既能提供本类访问,又能提供给不同包继承于此类的类访问方法和变量。
public:如果一个类的方法和变量使用public来修饰,则任意类能访问方法和变量。
下面通过一下例子来说明问题:
例子3:
People.java与Main.java位于同类
People.java
package test1;
class People {
//默认访问控制符
String name;
public People(String name) {
this.name = name;
}
String getName(){
//默认访问控制符
return this.name;
}
}
Main.java
package test1;
public class Main {
public static void main(String[] args) {
People p = new People("攻城狮");
System.out.println(p.getName());
}
}
此例子能正常运行,主要想测试一下默认修饰符修饰getName(),在同包的类中能正常访问。
如果此时,把Main.java放于不同的包中,查看能否正常运行?
People.java
package test1;
class People {
//默认访问控制符
String name;
public People(String name) {
this.name = name;
}
String getName(){
//默认访问控制符
return this.name;
}
}
Main.java

提示,在不同包中,是查看不了使用默认访问控制符修饰的方法。
例子4:
People.java
package test1;
public class People {
String name;
public People(String name) {
this.name = name;
}
protected String getName(){
//protected控制符
return this.name;
}
}
Main.java

提示,在不同包中,是查看不了使protected控制符修饰的方法。
编写一个Man类继承于People类
Man.java
package test2;
import test1.People;
public class Man extends People {
public Man(String name) {
super(name);
}
public void printName(){
System.out.println(this.getName());
}
}
Main.java
package test2;
import test1.People; public class Main { public static void main(String[] args) {
//People p = new People("攻城狮");
//System.out.println(p.getName()); Man m = new Man("工程湿");
m.printName();
} }
Man类继承于People类,则Man类中可以访问到People类中protected修饰的方法。
Java基础--访问权限控制符的更多相关文章
- Java基础—访问权限控制
Java中访问权限控制的作用: 为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. 为了让类库设计者可用更改类的内部工作方式,而不 ...
- 006-Java的访问权限控制符和包导入机制
目录 一.Java的访问权限控制符 一.访问控制符的作用 二.访问控制符的分类 二.Java的包导入机制 一.为什么要使用package? 二.package怎么用? 三.对于带有package的ja ...
- java:访问权限
访问权限四大类:权限从大->小 1.public: 公共权限 2.protected: 受保护权限 3.default: 包级别访问权限/默认权限 4.private: 私有权限 以p ...
- 【Java_基础】Java的访问权限控制
1.类成员的访问权限控制 Java中类成员的访问权限分为四类:private,无(默认情况下),protected和public.其权限控制如下表所示: 修饰词 本类 同一个包的类 继承类 其他类 p ...
- java的访问权限
Java语言中有4中访问修饰符:friendly(默认).private.public和protected. public :能被所有的类(接口.成员)访问. protected:只能被本类.同一个包 ...
- java 类访问权限
Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符. private: Java语言中对访问权限限制的最窄的修饰符,一般 ...
- Java的访问权限详解(3+1)public private protected default
Java使用三个关键字在类的内部设定访问权限:public.private.protected.这些访问指定词(access specifier)决定了紧跟其后被定义的成员(方法或属性)可以被谁使用. ...
- Java基础 -- 访问控制权限
一 包:库单元 假设我们存在两个类名相同的类,如果没有一定的措施对其进行区分,就会无法区别到底使用的是哪一个类.因此java引入了包来进行名字空间管理. 包(类库)包含有一组类,这些类在单一的名字空 ...
- java 的访问权限控制
package test06; public class PermissionModel { private int age; public String name; public int getAg ...
随机推荐
- c++中从一段字符串中提取数字
采用标准输入输出: 输入:12&3 34*133^3131 13031* 输出:12 3 34 133 3131 13031 思路,先将整个输入存进一个字符串,再解析字符串,这样运行速度会 ...
- 用Log4Net记录NHibernate中执行的SQL语句及执行时间
首页,在web.config中加入以下配置: <configuration> <configSections> <section name="log4net&q ...
- easyui grid中翻页多选方法
<table class="easyui-datagrid" title="人员选择" id="dg" data-options=&q ...
- C# 绘制统计图(柱状图, 折线图, 扇形图)
统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的:这里我们用 ...
- Java程序打包成jar包
方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] ...
- MPIO配置
设置好两块网卡的IP(实用同一段IP,或者不同网段IP均可以配置多路径)iSCSI发起程序配置:1.添加发现(默认设置即可)2.目标-连接-高级:分别配置 本地适配器.发起程序IP.目标门户IP(此处 ...
- Codeforces Gym 100015C City Driving 离线LCA
City Driving 题目连接: http://codeforces.com/gym/100015/attachments Description You recently started fre ...
- hdu 4597 Play Game 区间dp
Play Game Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=459 ...
- Codeforces Round #307 (Div. 2) A. GukiZ and Contest 水题
A. GukiZ and Contest Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/551/ ...
- tcpdump抓包分析具体解释
說實在的,對於 tcpdump 這個軟體來說,你甚至能够說這個軟體其實就是個駭客軟體, 因為他不但能够分析封包的流向,連封包的內容也能够進行『監聽』, 假设你使用的傳輸資料是明碼的話,不得了,在 ro ...