java程序的组织结构

java程序的组织结构

JAVA程序是由类和接口组成的。

一个简单的java程序,有一个类即可。

一个简单的类,可以仅包含一个入口方法public static void mainString[] args),如下:

  public class类名{

  …

  publicstatic void mainString[] args{

  …

  }

  }

一个比较完整java程序包括下列部分

        package语句;

    import语句;

  publicClassDefinition; // 公共的类定义部分,至多只有一个公共类的定义

  // java语言规定该java源程序的文件名必须与该公共类名完全一致

  classDefinition;// 类定义部分,可以有0个或多个

  interfaceDefinition;// 接口定义部分,可以有0个或多个

 

一般地,具有相同功能的类放在一个package中。

一个java源程序至多只能有一个公共类(public类)的定义。

java源程序有一个公共类的定义,则该源文件名字必须与该公共类的名字完全相同。

若源程序中不包含公共类的定义,则源该文件名可以任意取名。

若一个源程序中有多个类定义,则在编译时将为每个类生成一个.class文件。

java源文件又称为编译单元。一个java文件可以包含多个类,但至多包含一个公共类(public类),作为该java文件的公用接口,公共类的名字和源文件的名字要相同,但后缀为.java

一个java文件中,在不同类中,是可以有多个public static voidmain(String[] args)

示例如下:

package lc01;

public class cs {

cs(){

       System.out.println("你好啊! world!");

}

public static void main(String[] args) {

   new cs();

}

}

class a{

public static void main(String[] args){

}

}

但是,对于一个Java程序而言,往往只需要一个入口,也就是只需要有一个类包含main方法,而其他类都是用于被main方法直接或间接调用的。

如果一个java源程序中含有public的类,则文件名必须与类名一致,如果没有public类,则文件可以随意命名。一个文件中,public的类可以有零个或一个,非public的类可以有零个或多个。

又,publicstatic void main()不是必须要放在public类中,如

package lc01;

class Dog{ 

   Dog(){ 

       System.out.println("I'm a dog."); 

   } 

   public static void main(String[] args){ 

       new Dog(); 

       new Cat(); 

   } 

class Cat{ 

   Cat(){ 

       System.out.println("I'm a cat."); 

   } 

文件中没有一个public类,程序也能正常运行。

Java包、公共类与Java源码文件的关系

包(package)是一个为了方便管理组织java文件的组织和管理方式。包内包含有一组类。可以使用import关键字来导入一个包。例如使用import java.util.*就可以导入java.util包里面的所有类。所谓导入这个包里面的所有类,就是在import声明这个包名以后,在接下来的程序中可以直接使用该包中的类。

一个Java源代码文件必须有一个后缀名.java,此文件通常被称为编译单元。在编译单元内有且仅有一个public类,否则编译器就不会接受。该public类的名称必须与文件的名称相同(包括大小写,但不包括后缀名.java)。

当编译一个.java文件(即一个编译单元)时,在.java文件中的每个类都会有一个输出文件,而该输出文件的名称与.java文件中每个类的名称相同,只是多了一个后缀名.class。因此在编译少量.java文件之后,会得到大量的.class文件。每个.java文件都是一个构件,如果希望许许多多的这样的构件从属于同一个群组,就可以在每一个.java文件中使用关键字package。而这个群组就是一个包。

 例如,假设文件的名称是Apple.java,这就意味着在该文件中有且仅有一个public类,该类的名称必须是Apple(注意大小写):

package fruit;

public class Apple

{

      //...

}

上面的代码已经将Apple类包含在了fruit包中,现在如果有人想使用Apple或者是fruit中的任何其他public类,就必须使用关键字import来使fruit中的名称可用。

import fruit.*;

public class ImportApple

{

     public static void main(String[] args)

      {

           Apple a=new Apple();

      }

或者使用带包名的限定名称:

public class QualifiedApple

{

     public static void main(String[] args)

      {

           fruit.Apple a=new fruit.Apple();

      }

}

显然使用关键字import使代码更加简洁。

一个项目(Project)可以有几个包,包是为了更好的规划整理你写的各个类,将相关的类放在一个包中。包是为了更好的规划整理你写的各个类。

包(package)的作用

1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

2 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。

3 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。

Java源文件中,如果使用package语句,则package语句应作为第一条可执行语句(它的前面只能有注释或空行),指明该源文件定义的类所在的包。package语句的一般格式为:

package  包名;

包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成,包的名字有层次关系,各层之间以点分隔。包层次必须与Java开发系统的文件系统结构相同。例如 packageaaa.bb.image

则此文件必须存放在aaa\bb\image目录下 

如果源程序中省略了package语句,源文件中所定义命名的类被隐含地认为是无名包,即源文件中定义命名的类在同一个包中,但该包没有名字。

包(package)分为无名包和有名包,无名包的好处是无需对包作任何声明,可以拿来方便快捷使用,但也因为无名包没有名字,所以其它包无法用import语句导入访问无名包中的类,所以说无名包只适合在局部应用。而有名包就可以被其它包所访问,先用import语句导入,再用“包名.类名”方式访问指定包中指定的类。





猜你喜欢

转载自blog.csdn.net/cnds123/article/details/80446981