java子包的构建/import用法以及访问权限

本来不难,但是初学者易犯错误,尤其包的建立上,必须在原有的类名字上加上 .,再加上其他

,不加上一点,则会出现包与包同级

 

具体过程如下

按完成即可!

 

 

当A类和B类不在同一个包中,若A类需要使用到B类,此时就得让A类中去引入B类.

Arrays类的全限定名:java.util.Arrays-

 

解决方案: 使用import语句,直接把某个包下的类导入到当前类中.   语法格式:  import   需要导入类的全限定名;    此后,在本Java文件中,只需要使用类的简单名称即可.

 

上述代码,表示分别引入了java.util包下的Arrays类,Set类,List类.问题:如果我们还需要继续引入java.util包中其他的类,我们还得提供N个import语句,要写很多次,不爽. 解决方案:使用通配符(*). import    类的全限定名;    只能导入某一个类. import    包名.子包名.*;   表示会引入该包下的所有的在当前文件中使用到的类. import  java.util.*; 此时的*表示类名.    在Eclipse工具中,即使我们使用了通配符*,在格式化代码的时候,也会转换为N条import语句.     注意: 编译器会默认找java.lang包下的类. 但是却不会去找java.lang的子包下的类.                比如:java.lang.reflect.Method类.                此时我们也得使用import java.lang.reflect.Method.

 

 

package guanjianzi;

import java.util.*;

import guanjianzi.a.hellow;   //父子级

import sub.hello;   //同级

public class guanjianzi {

     public static void main(String[] args) {

        // TODO Auto-generated method stub

        // int[]a=new int[] {100,66,44,88,99,101};

         //String set=Arrays.toString(a);

         //System.out.println(set);

        // hello h=new hello();

         //h.show();

         hello aa=new hello();

         hellow bb=new hellow();

         bb.show();

       }

}

 

封装其实就是要让有些类看不到另外一些类里面做了什么事情。所以java提供了访问权限修饰符来规定在一个类里面能看到什么,能暴露什么。

-------------------------------------------------------------------------------------------- 

访问权限控制:   

  private:         表示私有的, 表示类访问权限.  只能在本类中访问,离开本类之后,就不能直接访问. 

不写(缺省):  表示包私有,表示包访问权限.  访问者的包必须和当前定义类的包相同才能访问. 

protected:    表示子类访问权限,同包中的可以访问,即使不同包,但是有继承关系,也可以访问. 

public:           表示全局的,可以公共访问权限,如某个字段/方法,使用了public修饰,则可以在当前项目中任何地方访问.

 

 

 

 

package a;

class  A {   

   private int age;//此时age只能在A类中访问    

              } 

 

---------------------------------------- 

package a.b; 

class B {   

   String name;//此时name变量没有访问修饰符.      //name只能在a.b包中访问.

 } 

 


package a.b.c;

 class C {  

 

     }

 

 

 

 


一般的:字段都使用private修饰,表达隐藏,为了安全性. 拥有实现细节的方法,一般使用private修饰,不希望外界(调用者)看到该方法的实现细节. 一般的,方法我们使用public修饰,供外界直接调用.

 


//直接暴露给外界,供调用者直接调用即可 

public void doWork() {    

       methodA();      

       methodB();         

       methodC(); 

//仅仅只是完成了部分操作,不需要调用者调用

 private  methodA(){}

 private  methodB(){} 

 private  methodC(){}

 -------------------------------------- 

一般的,我们不用缺省,即使要使用,也仅仅是暴露给同包中的其他类. protected:一般,在继承关系中,父类需要把一个方法只暴露给子类.

 

 

 

 

 

 

 

 

父级的包guanjianzi简单调用实例

package guanjianzi;

import java.util.*;           

import guanjianzi.a.hellow;

import sub.hello;

public class guanjianzi {

     public static void main(String[] args) {

        // TODO Auto-generated method stub

        // int[]a=new int[] {100,66,44,88,99,101};

         //String set=Arrays.toString(a);

         //System.out.println(set);

        // hello h=new hello();

         //h.show();

         hello aa=new hello();

         hellow bb=new hellow();

         bb.show();

       }

}

同级sub

package sub;

public class sub {

   

    public static void main(String[] args) {

        // TODO Auto-generated method stub

    

    }

}

子级hellow

package guanjianzi.a;

 

public class hellow {

 

        public void show()                              //必须public在不同的包里面全局调用

        {System.out.println("hello word");}

   

    public static void main(String[] args) {

        // TODO Auto-generated method stub

       

    }

}

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值