所谓的包就是为每个
Java
类提供一个命名空间。处于同一个包中的两个
Java
类可以不需要其他任何语句就相互寻找。类有四种类型,
abstract
、
final
、
friendly
和
public
,其中后两种类型和包的定义相关,其中
public
类型的类可以为任何对象所存取,而
friendly
类型的类只有在相同包中的对象才能使用。成员变量或成员方法的
public
和
friendly
类型限制和类的类型限制相同,而protected
类型的方法或变量可以被其同包中的类,子类等访问,与friendly
相似(好像是没有区别的)。
private
类型的方法或变量只可以被自己类的方法所访问。
另外,如果程序位于两个包中,如果之间需要相互调用,则需要使用
import
语句将需要的类包括进来。注意,这种包括,只是保证可以进行范围以内的访问。即如果一个类要访问另外一个包中的公共类,则需要将那个公共类包括进来,但是还是不可以访问那个公共类中的
protected
、
private
和
friendly
类型的变量或是方法。
static
修饰的成员变量叫做类变量,它被所有对象共享,对所有的实例只使用一个备份。同样,有
static
修饰的成员方法叫做类方法。类方法不能使用该方法所在类的实例变量和实例方法,因为类方法也许会在实例化该类之前被调用。另外类方法中不能使用
this
关键字,因为
this
是代表调用该方法的对象,类方法不需要对象来调用,所以
this
不应该存在于类方法内部。
final
用于修饰类的时候,说明类是最终类,不能被其他类继承,也不能进行实例化(这是教科书上一句错误的话);
final
修饰的变量是最终变量,即常量;用
final
修饰的方法不能再被子类重写。
main
方法是程序的入口点,它没有返回参数,而入口参数就是应用程序运行时在命令行给出的参数。
所谓内部类,就是在某个类的内部嵌套定义一个类,内部类可以在一个语句块的内部定义,也可以是其他类的成员,还可以在一个表达式内部匿名定义。内部类的特性有:
11
)内部类可以声明为
private
或
protected
;
2
)内部类可以定义为
abstract
;
3
)内部类不能与包含它的类名相同;
4
)内部类可以使用包含它的类的成员变量,包括静态和实例成员变量,也可以使用内部类所在方法的局部变量;
5
)内部类如果被声明为
static
,就变成了顶层类,这样就不能再使用局部变量,也只有内部类是顶层类时,才可以声明
static
成员。通过使用内部类虽然可以大大节省编译后产生的字节码文件的大小(为何可以以后再查询),但是会造成程序结构上的不清楚。