Java没有友联(函数)这个概念怎么办?

在设计程序时,为达到一个复杂的目的,需要设计多个类,有时会遇到一个类和另一个类共同合作、互相调用对方的方法这种情况。我们想让类的某些方法只是为指定的类准备,而不允许其他类访问,该如何解决呢?

 

通常按照我们一般的面向对象的思维,学过c++面向对象的,我们会想到用友联函数,通过修饰类成员方法为友联,来直接达到目的:指定另一个类有权限能够访问这个方法。但对于其他类来说,这个方法是隐藏、不可视、不可访问的,即没有权限。

这在c++里是没有问题的。

 

那么java里有没有友联这个概念呢?

答案是有的,确实为这种问题设计有解决方法。

不过在java中,友联的概念的实现,不是靠c++的声明友联函数的路子实现,而是另一种不同的路子:

 


我们可以回忆下最初我们学习的四大java权限访问修饰符,有哪些呢?按照开放程度高低依次为:public default protected private

这四个中,有哪些是跨类权限(跨类权限即允许类外的其他类访问)呢?

 

有两个,一个是public,一个是default 。这两个权限中,如果我们把类修饰成public,那么任何类都可以访问了,而我们的目的是让修饰的方法只有指定类可以访问。那么看default,default权限的定义是,只允许同包下的类访问。这个特性就可以满足我们这个问题的需求,只要我们把方法修饰成default(不加任何修饰符就是default),然后把需要指定类才能访问它的类给放到同包目录下,就可以实现对这些类可视、可访问,而对外(对包外的类)隐藏。

 

剩下两个修饰符,protected是只允许自己类和子类的权限;private是只允许自己类的权限。

这两个修饰符都是局限在类内部的,无法使得与类外的其他类联系。

 

很多新手程序员刚学习java,很少用default这个修饰符,基本就是private+public两个修饰符写不停,可以说它是用的最少的一个修饰符了,这里想说的是,在以后开始遇到这种情况起,就要恰当地采用default修饰符了。

 

技术总结:在Java中面向对象设计中,要想实现友联,依赖权限修饰符default,利用同包可访问的特性,来实现成员友联。

 

抽象概念的简单实体化理解

一个公司(包)里,员工之间是有信任关系的(虽然现实中信任程度有限),他们需要共同协作完成任务,所以他们的有些资源可以在团队内部共享,有些人的方法可以被团队内部的其他人调用。这些属于团队内部资源,而这些资源对外其他人保密、不授权。

因此在设计类时,如果出现了多个类存在依存关系,它们互相不可或缺,需要共同协作完成任务时,可以视为它们是一体的团队,把他们放在一个包下(为这些人开了个公司~),并将团队内部资源修饰为default,就可以实现团队内部工作和对外工作两不误的兼容美象。

这告诉了我们,解决问题除了每个人都靠个人外,还要学会团队合作~

还告诉我们,同处于一屋檐下的人,基本上算是朋友了吧(友联),你们之间是可以合作的,因为你们都有共同之处才处在同一个层次里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值