我们今天来给大家解析一下Java中四种修饰类型的区别。
那么有的老铁就疑惑了,文章名称不是说三种吗?其实还有一种隐藏的修饰类型(默认类型)英文翻译过来的话是define,这就是我们什么都不修饰,例如:int a=0; 那么这个a就是默认类型的。我们今天将结合一个实例来帮助老铁们理解这块知识点
首先我们知道,QQ这个东西我们用的都很熟系吧。他有很多增值业务。能让你享受到更多的特权以及更好的体验。而QQ中的会员是最有代表性的,我们将其划分为四项:普通用户、QQ会员(VIP)、QQ超级会员(SVIP)、QQ大会员
private(普通用户)
private:代表封装的意思,对于一个手机的话,我们能看到的是有屏幕,机身,而内部的结构我们是看不到的,这就是封装的意义,使用范围是同一包中的同一类(普通用户功能)***
class Best{
private int count;
public int num;
}
public class Test {
public static void main(String[] args) {
Best best=new Best();
best.count=1;
best.num=2;
}
}
我们可以看到,在使用best访问count是会变红的,代表不可以使用,那么被private修饰的变量在其他类如何访问呢?
class Best{
private int count;
public int num;
public void setCount(int count) {
this.count = count;
}
public int getCount() {
return count;
}
}
public class Test {
public static void main(String[] args) {
Best best=new Best();
best.setCount(1);
//best.count=1;
best.num=2;
}
}
很多老铁已经想到的,是的!就是利用公开的方法来帮助修改与输出count的值!
对于QQ的普通用户也是一样的 ,如果想要使用尊贵的QQ会员才能够享受的功能,就必须动一点小脑筋。
define(QQ会员)
默认类型,开头已经介绍了,对于定义一个变量不做任何修饰的话就是默认类型,他的使用范围是同一包中的同一类(普通用户功能)、同一包中的不同类(QQ会员功能)
我们可以看到没有添加任何的修饰,我们的不同类还是可以访问的,那么同一个包是什么意思呢?
我们可以看到这个Demo1包,在这个包下的所有类都可以访问到这个变量
也就是我们尊贵的QQ会员,享受到了尊贵的体验与区别,是的!充钱使你变得强大!
protected(QQ超级会员)
protected:可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问,作用范围是同一包中的同一类(普通用户功能)、同一包中的不同类(QQ会员功能)、不同包中的子类(QQ超级会员功能);
是的,比 QQ会员要享受更多的特权,如果你感觉充钱还不够强!那么你可以再冲!
这个在应用中会有很多需要注意到的点 首先是子类,要继承父类才可以使用,而且在使用中 为何我还要写一个func方法呢,我们是否还记得静态方法中不能直接访问,所以我们需要一个非静态的方法来进行访问,这就是func方法的意义,对的,即使你再次充钱了!还是达不到你起飞的地步
public(QQ大会员)
对于老马旗下的游戏来说,只要你一直冲。你就是大佬,那么在你不断的金钱诱惑下,你也变得非常的强大了
public:可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问,这就是顶级的QQ增值业务,拥有横穿各个区域的钞能力。
是的!对于顶级用户(public)开通了大会员服务,任何的类跟包可以相互跳转使用,这无疑是体现了钞能力!
作用范围是同一包中的同一类(普通用户功能)、同一包中的不同类(QQ会员功能)、不同包中的子类(QQ超级会员功能)、不同包中的非子类(QQ大会员)
我们使用了QQ会员例子来给大家形象的举例了修饰限定符,不知大家理解了吗?