Java 类中的变量和函数有三种访问级别,分别为public,protected和private,对应权限为:
1) public实例变量和成员函数可以由任意其他类调用。
2) protected实例变量和成员函数只能被其子类调用。
3) private实例变量和成员函数只能在本类里调用。
如果没有定义任何访问控制,实例变量或函数缺省定义成friendly,这意味着可以被本包里的任意对象访问,但其他包里的对象不可访问。
对于静态成员函数和变量,有时候,你创建一个类,希望这个类的所有实例都公用一个变量。就是说,所有这个类的对象都只有实例变量的同一个拷贝。这种方法的关键词为static。
class Block {
static int number=50;
}
所有从B l o c k类创建的对象的n u m b e r变量值都是相同的。无任在哪个对象里改变了 n u m b e r的值, 所有对象的n u m b e r都跟着改变。同样,可以定义s t a t i c成员函数,但这个成员函数不能访问非s t a t i c函数和变量。
class Block {
static int number = 50;
int localvalue;
static void add_local(){
localvalue++; //没有运行
}
static void add_static() {
number++;//运行
}
}
t h i s关键词是指向这个类本身的指针。
public TestClass (int value) {
this.i = value;
}
如果在一个子类里覆盖了父类的某个成员函数,但又想调用父类的成员函数,可以用super 关键词指向父类的成员函数。
类的类型:
a b s t r a c t。一个a b s t r a c t类必须至少有一个虚拟函数,一个 a b s t r a c t类不能直接创建对象,必须继承子类后才能创建对象。
f i n a l一个f i n a l类声明了子类链的结尾,用f i n a l声明的类不能再派生子类。
P u b l i c。p u b l i c类能被其他的类访问。在其他包里,如果想使用这个类,必须先 i m p o r t,否则它只能在它定义的p a c k a g e里使用。
s y n c h r o n i c a b l e。这个类标识表示所有类的成员函数都是同步的。
Abstract类:当一个类包含一个a b s t r a c t成员函数时,这个类必须定义为a b s t r a c t类。然而并不是a b s t r a c t类的所有成员函数都是a b s t r a c t的。A b s t r a c t类不能有私有成员函数(它们不能被实现),也不能有静态成员函数。
当确定多个类的操作方式都很相像时, a b s t r a c t成员函数是很有用的。但如果需要使用这个a b s t r a c t成员函数,必须创建一个新类,这样有时很繁琐。接口提供了一种抽象成员函数的有利方法。一个接口包含了在另一个地方实现的成员函数的收集。接口里的实例变量是p u b l i c、s t a t i c和f i n a l。接口和抽象的主要区别是,一个接口提供了封装成员函数协议的方法而不必强迫用户继承类。
包( P a c k a g e )由一组类( c l a s s )和界面( i n t e r f a c e )组成。它是管理大型名字空间,避免名字冲突的工具。每一个类和界面的名字都包含在某个包中。按照一般的习惯,它的名字由“ .” 号分隔的单词构成,第一个单词通常是开发这个包的组织的名称。
package packageName;
//前缀包名法 acme. project.FooBar
obj=new acme. project. FooBar( );
// 从 acme.project 引入所有类
import acme.project.*;
在使用一个外部类或界面时,必须要声明该类或界面所在的包,否则会产生编译错误。i m p o r t (引入)类包(class package)用i m p o r t关键词调入指定p a c k a g e名字如路径和类名,用*匹配符可以调入多于一个类名。