黑马程序员:Java基础学习——包

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

是相关类的组合,它是对类的封装

  • 作用

    • 对类文件进行分类管理

    • 给类提供多层命名空间

      类名的全称是:包名.类名

  • 声明

    • 写在程序文件的第一行:package包名;

    • 一个程序文件只能有一个包声明,并且文件中的所有类都属于此包

  • 命名惯例

    • 使用小写字母,避免和类名或接口名冲突

    • 公司使用它们颠倒的域名作为它们包的开头

      如一个在example.com的程序员使用com.example.mypackage作为mypackage的包名

    • 同一公司的命名惯例可能在公司名域名后包括地区或工程名

    • 如果有非法字符或数字开头,可以使用下划线修改

      如非法字符用下划线代替,数字开头增加下划线开头,使用保留字的添加下划线

  • 访问指示符

    • “友好的(Friendly)”或“默认(Default)”的

      如果根本不指定访问指示符,它通常称为“友好”(Friendly)访问,这是默认的访问方式。

      这意味着当前包内的其他所有类都能访问“友好的”成员,但对包外的所有类来说,这些成员却是“私有”(Private)的,外界不得访问。

      包访问权限

      • 作用

        • 使单个编译单元(源码文件)内的所有类相互间都是可访问的。

      • 好处

        • 允许我们将相关的类都组合到一个包里,使它们相互间方便地进行沟通。

        • 强制用一种较有意义的形式对类进行组织

    • public:接口访问

      意味着紧随在public后面声明的成员适用于所有类(包内或包外)访问

      公共访问权限

      • 作用

        • 使所有类都可以访问被其修饰的类和类内的“public”成员

      • 好处

        • 方便向客户程序员开放访问权限

    • private:不能接触

      意味着除了包含这个成员的类中的方法能够访问它外,没有其他Object能访问它。

      类访问权限

      • 作用

        • 将其他类与成员本身隔离起来

      • 好处

        • 允许我们自由地改变这个成员,而毋须关心它是否会影响同一个包内的另一个类。

          • 使用private可以控制对象的创建方式,并防止有人直接访问一个特定的构建器(或所有构建器)

          • 通过用private修饰构建器,可防止对对这个类的继承

            • //:IceCream.java
              // Demonstrates "private"keyword
              class Sundae {
                  privateSundae() {}
                  static Sundae makeASundae(){
                      return newSundae();
                  }
              }
              public classIceCream {
                  public static voidmain(String[] args) {
                     //! Sundae x = new Sundae();
                     Sundae x = Sundae.makeASundae();
                  }
              }///:~

    • protected:“友好的一种”

      意味着被它修饰的成员可以在同一包中被访问,也可以被其它包中继承它的类的子类所访问

      包和子类访问权限

      • 作用

        • 阻止来自子类和同包类以外的访问

      • 好处?

    • 默认包

      如果包含类文件位于同一目录下,并用文件中没有明确的包声明,这样的文件被Java看作那个目录“默认包”的一部分,它(们)与目录下的其他文件都是在同一个包内的。

  • 如何获取对类中成员的访问

    • 使类及其成员成为“public”(公共的)。

    • 使用默认访问指示符,并将其类置于相同的包内。

    • 继承此类后,继承的类可以访问该类的成员(被private修饰的成员除外)

    • 提供“获取/设置”方法,以便读取和修改值

    如何访问不同包中的类及其成员

    • 使用全限定(指名所属包及其所属的所有上层包)的类名

      • 如:java.util.Scannerinput = new java.util.Scanner(System.in);

    • 导入要访问的类

      • 使用import关键字

        import包全名(包括完整的包路径);例如,importjava.util.Scanner;


    • 导入要访问的类所属包中所有的类

      • 如:importjava.util.*;

  • 编译带有包声明的源文件,javac中可以用到的选项

    • -d文件路径

      功能:设置class文件的目标路径。路径必须存在。

      注:javac不会创建这个路径。如果一个class是一个package的一部分。javac将把class文件放入对应package名字的子目录内,必要时创建该子目录。例如,如果你定义-dC:\myclassesclass名为com.mypackage.MyClass,那么产生的class文件是C:\myclasses\com\mypackage\MyClass.class。如果-d没有定义,javac将所有class文件放在对应源文件所在的路径。

      注意:-d定义的路径不会自动添加到你的userclass路径。    

资料来源:
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值