1. 说明
①. 工程相当于一个软件,包相当于模块,类相当于模块下各个功能的实现。(学过python的同学更好理解,类似python下模块和方法)
②. 类下再有各种自己具体完成任务需要的成员变量和实现方法。主方法也在某一个public类中。
③. 包(package)相当于姓名中的“姓”,类(class)相当于“名”。所以在调用某类方法的时候,不仅需要指明方法所在的“名”,即类,还要指明方法类所在的“姓”,即包。这样编译器才知道你调用的方法是哪一个。
2. 总结
2.1 实例
先看一个工程实例:
package helloWorld //定义包,关键字为package
public class Example{ //定义类,只有公开类才能定义main方法
static int one =1; //定义一个静态成员方法
public static void main(String[] args){ //定义主方法
String var = "Hello" ;
System.out.println(one+"is"+var);
}
}
[注]:
Ⅰ. 类名和文件名相同,一个Java文件中最好仅定义一个类,多类不方便管理。如果多类定义,则仅有一个类可以被public修饰,这个类且必须和文件同名,其他类则不能被其他包里类所引用。此外,若存在主方法main函数,public的main方法只能存放在这个public类当中。
Ⅱ. 上面定义的主方法是程序入口的固定写法,除调换public、static的位置(规范写法最好是将public放前面),和String[] args改为String args[], 不可做任何修改。
Ⅲ. System.out.println(…)中System是系统类,out是其提供的一个标准输出流,println()是out的实现方法。
Ⅳ. 包建议小写字母开头,而类以大写字母开头。
Ⅴ. 由于main方法是静态的,所以不可以直接调用类中非静态成员变量或方法。但是可以在main函数中创建实体(对象)再调用方法和变量。
Ⅵ. 类内给定义的成员变量直接可以赋初值,而C++中只可以在类声明中定义类成员变量,而赋初值需要在构造函数中。而Java成员变量定义和赋值可以在类中同时完成。当实例化对象,进入类构造函数前,限制性这些变量赋初值。
2.2 包类具体使用
- 对类文件进行分类管理;
- 给类提供命名空间,相当于一张封装形式(类似C++中namespace);
- 类名的全称是:包名.类名,即“姓”+“名”;
- 包定义放在文件开头,导入包和类也是一样;
- 导入包和类import关键字:
import pack.ClassA; //导入包pack的classA类
import pack.*; //导入包pack下的所有类,这个方便调用导入一个包下多个类的写法
当导入包类以后,可以通过类实例化对象,再通过对象调用类中具体实现方法了。
例如:
import java.util.Scanner;
Scanner scan = new Scanner(System.in); //实例化类Scanner
String str = scan.nextline(); //调用Scanner中方法nexline(),从输入流中获取一行字符串
如果导入两个包后,都存在相同的类,则在使用类的时候指明哪个包。
import pack1.ClassA;
import pack2.ClassA;
pack2.ClassA cla = new pack2.ClassA(); //指明调用的是哪个包的方法
个人学习记录,由于能力和时间有限,如果有错误望读者纠正,谢谢!