Ⅰ java中包访问权限private,protected,public和default的区别
public:可以被所有其他类所访问
private:只能被自己访问和修改
protected:自身、子类及同一个包中类可以访问
default:同一包中的类可以访问,声明时没有加修饰符,认为是friendly。
Ⅱ java中的两个不同的包如何访问
要么带入import
要么在程序用到其他包的类的部分直接将该类挂上完整路径,建议第一种
Ⅲ JAVA小问题,关于类访问另一个包中的类的问题,请大神看清问题在作答
文件示例
张三告诉班主任:“我今年8岁了。”
Ⅳ java中访问权限的控制。java默认的是包访问权限,但是对于有些情况如何处理呢。例如有四组类abcd(每组里
如果不考虑其他的类的话,c访问d,a不能访问d,那么把d相关权限设为default,a,c处在不同包里,c、d在同一个包里。a,c都访问b,那么就让b的权限设为公开。
但这可能导致包之间管理的混乱。
如果一定要跨包访问,但又不愿设立public的访问权限,那么单靠JAVA语言的访问控制很难做到,则可以稍微提升一下耦合度,并借助多态来实现。
比方说,a、b是两个不同的包,要让a能访问b的default的东西,那么可以如下:
a设立一个接口:
publicinterfaceIA
{
voidF();
}
某个要使用b的函数
publicclassA1
{
……
privateIAa;
……
publicvoidG(IAa)
{
……
this.a=a;//这样就可以在别的方法里用
a.F();//多态,a根本不知道b里有什么类也能访问相应的方法。
……
}
}
以上是a里的,下面是b里的:
如果是整个类都是default的
classB1implementsIA
{
publicvoidF(){……}
publicB1()
{
newA1().G(this);//这样就把自己传给了a,a不用知道自己是什么东东也能使用F方法。
}
}
如果是类的部分方法为default的
publicclassB2
{
……
voidFF();//想让这个方法被a调用。
privateclassB22implementsIA//把B22的实例传给a
{
publicvoidF()
{
FF();//这就等于让a调用FF方法了。
}
}
}
上面这种方法缺点不少,得由b亲自把自己的实例传给a,使得类间的关系变得有点复杂,但是用好了还是可以最大程度降低其缺点。
上面这种结果是你要的吗?还有什么特别的要求吗?
Ⅳ java中包到底是什么意思包访问权限又是什么意思,有C++基础。
是否是说 first.java中有A B C 三个类,second.java中有D E F 三个类,那么first和second是两个不同的包?不是,这是java文件的组织方式,因为java强制要求一个public类必须在一个同名的文件中,但是多个包访问权限的类是可以在同一个文件夹中的
First.java
classA{
voidprint(){
System.out.println("A");
}
}
classB{
publicvoidprint(){
System.out.println("B");
}
}
classC{
publicvoidprint(){
System.out.println("C");
}
}
Second.java
classE{
publicvoidprint(){
System.out.println("E");
}
}
classD{
publicvoidprint(){
System.out.println("D");
}
}
classF{
publicvoidprint(){
System.out.println("F");
}
}
A B C D E F都是在同一个包中,而不是ABC在firstFirst包中,而DEF在Second包中
改写Second.java
packagepackage2;
classE{
publicvoidprint(){
System.out.println("E");
}
}
classD{
publicvoidprint(){
System.out.println("D");
}
}
classF{
publicvoidprint(){
System.out.println("F");
}
}
你现在first.java中是无法访问EDF类的,这才是包的概念,另一个包中的(First.java中的ABC是在默认包中也是另外一个包)是无法访问EDF类的,因为他们是包访问权限,类只有两种权限,包访问权限和public权限
包访问是说我可以在first.java中访问second的某些方法或生成D E F对象吗?
是说如果first.java和second.java是在同一个包中,那么是可以的,但是如果不在同一个包中,并且那些类或方法是包访问权限,那是没有办法访问的
在添加一个类Third.java
packagepackage2.third;
classThird{
publicvoidprint(){
System.out.println("E");
}
}
classD{
publicvoidprint(){
System.out.println("D");
}
}
classF{
publicvoidprint(){
System.out.println("F");
}
}
这些类都是包访问权限,那么E.java中的类可以访问吗?不可以,包没有嵌套的概念,即使Third.java是在E.java的的子包中即E.java在package2中,而Third.java在package2.third
java中类的访问权限(不是内部类,内部类必须另加讨论)只有public和包访问权限,要么所有包中的类和方法都可以访问,要么只有在同一个包中的类才能访问,并且
packagepackage2.third;
是在package2.third包中
packagepackage2;
实在package2包中,这是两个不同的包,即使在电脑上third文件夹是在package2文件夹中
Ⅵ java包访问权限default和protected的区别
包访问没有权限的说法,import什么包就用什么包。
protected private 指的是方法或内部类的访问权限。
Ⅶ Java 包(package)应用及访问控制问题
果然还是分的魅力大,一样的帖子居然差异那么大,我就直接考过来了
分是不是少了点,我还得翻翻书,再看看,自己还得动手才行呀,实践出真理
我一边做一边写,D类为B的子类是不行的,缺省类只能被包颂肆内的类访问,
缺省类相当于是包内的public,对于包外是不可见的,这里D只能继承A类
还有缺省方法也和缺省类一样,只是包内的public,这里D继承A后,并不能用
A中的缺省方法,所以由上得出:缺省==包内的public,对于包外是private
Q3,对于包外的类,只能访问public成员
Q4,不能访问包外的缺省类
Q5,Q6和上面是一样的
Q7,能访问除了private以外的所有成员
其实这4种访问控制形成了一个完整的访问脊樱宏机制,
这里说一下protected 在包内 = public
在包外,只能被子类访问,意思就是在包外的类只有樱册继承了该类才能
访问该类的protected成员
你最好去找一个访问权力的标单,清晰明朗的说明了一切
Ⅷ java中同一个包中自由访问的问题
你被调用的类里面也有main主函数
这样写就可以了段塌猛衫姿
publicclassHelloTest{
publicstaticvoidmain(String[]args)
{
Helloh=newHello();
h.hello();
}
}
//被调用的类
class握桥Hello{
publicvoidhello()
{
System.out.print("hello,world");
}
}
我这两个类你分开写也行 我现在全复制在一起方便你查看
Ⅸ java同一个包下的类互相调用,应用哪个访问权限
java同一个包下的类互扮带乱相调用,应用族之间数据交流访问权限,主要是你要通过相对应的数据交换,还有相对应的数据调用,通过这样的方式进行使用对应的访问权限,所厅档以你可以应用相对应的数据交流的访问权限,是同一个包下面的类目互行渣相调用
Ⅹ java包(package)应用及访问控制问题,如何编写程序
1、 C 类能只正常访问 A类 和 A类用public修饰的属性的方法,
2、如果B类为public C类能访问B类的用public修改的属性和余伏春方法
3、D类能访问A类的用public 和 protected 修饰的属性的方法
4、如果B类为public 修改的 D类能访问用public 修饰的竖耐属性的方法
public:共有的,包外的都可以访问,儿女和朋友可以访问不用说了(所有地方)
protected:保护的,儿女和朋友和我的关系比较密切,他们可以访问,其他的免谈(相同包或者不同包的子厅穗类)
private:私有的,儿女不行,更不要说朋友,只有我自己本身可以访问(只有自己内部访问)
friendly:什么都不写时默认是friendly,朋友可以访问 (相同包可以访问,不同包子类“不”能访问)