17.包和访问权限

  • 软件包
    • 为java类提供了命名空间
    • 将类放置到一个包当中,需要使用package"包名"
    • 编译时需要使用 -d 参数,该参数的作用是依照包名生成相应的文件夹

                例如:D:\work\src>javac -d . Test.java

 

    • 一个类的全名应该是“包名” + “.” + “类名”
                运行:java Arron.Test
    • 在不同的包中时,调用需写上包名
 
  • 包名的命名规范
    • 1、要求包名所有的字母都要小写
    • 2、包名一般情况下,是你的域名倒过来写
    • Arron.org
                D:\work\src>javac -d . Test.java
                D:\work\src>java org.Arron.Test
 
  1. package org.Arron; 
  2. classTest{
  3. publicstaticvoid main(String args []){
  4. System.out.println("Hello package");
  5. }
  6. }
 
  • java当中的访问权限
    • 分类
      • 1、public:公共权限
        • 可以修饰类,成员变量和成员函数
        • 如果一个类被声明为public,那么这个类的名字必须与原文件的名字相同
        • 在一个包的外部调用一个对象的某一个成员变量或成员函数,要求被访问这个变量或函数应该是public权限。
  
  1. package org.Arron;
  2. publicclassPerson{
  3. publicString name;
  4. publicint age;
  5. publicvoid introduce(){
  6. System.out.println("name:" + name); System.out.println("age:" + age);
  7. }
  8. }
 
  1. package com.ArronAndroid;
  2. classTest{
  3. publicstaticvoid main(String args []){
  4. org.Arron.Person p =new org.ArronAndroid.Person();
  5. p.name ="zhagnsan";
  6. p.age =20;
  7. }
  8. }
 
结果:
 
D:\work\src>javac -d . *.java
 
D:\work\src>java com.ArronAndroid.Test
name:zhagnsan
age:20
 
      • 2、private:私有权限
        • 可以修饰成员变量和成员函数
        • 只能在当前的类中使用,即使实在同一个包当中
 
      • 3、default:包级别访问权限
        • 不写权限修饰符,就是default权限,可以修饰类,成员变量和成员函数
        • 默认权限:只要在同一个包当中,可以任意使用
        • 如果在不同的包当中就不可以调用
 
      • 4、protected:受保护权限
 
 
  • 软件包的导入
    • 在不同的包当中(public),可以用
      1. import org.Arron.*;
      来导入其他包的类。
 
  1. package org.Arron;
  2. publicclassPerson{
  3. publicString name;
  4. publicint age;
  5. publicvoid introduce(){
  6. System.out.println("name");
  7. }
  8. }
 
  1. package com.ArronAndroid;
  2. import org.Arron.*;
  3. classTest{
  4. publicstaticvoid main(String args []){
  5. Person p =newPerson();
  6. p.name ="zhagnsan";
  7. p.age =20;
  8. }
  9. }
 
  • 访问权限与继承
    • 如果子类和父类不在同一个包当中,这子类可以继承到父类当中的default权限的成员变量和成员函数,但是由于权限不够,无法使用。如果要使用,需要使用public权限
    • 即使子类和父类在同一个包当中,如果成员变量或函数被声明为private权限,子类也是无法使用的
 
 
  • protected权限
    •  protected权限拥有和default权限一样的功能,但是该权限只能 修饰成员变量和成员函数
    • 如果子类和父类不再同一个包当中,那么子类也可以使用父类当中被声明为protected权限的成员变量和成员函数
    • 如果两个类没有任何关系,不同包当中的类只能访问public当中的类
  • 权限排名:public>proteced>default>private
 
 





posted @ 2016-08-28 17:21  ArronEve  阅读(162)  评论(0编辑  收藏  举报