JAVA类声明定义了新的引用类型。
顶层类:指不是嵌套类的类;
嵌套类:指声明出现在其他类体或接口中的类。
具名类是可以被声明为abstract的,并且如果他没有完全被实现,那么他必须被声明是抽象的,这样的类不能被实例化,但是可以通过子类扩展。类可以被声明为final的,此时他不能有子类。如果类被声明为public的,那么他可以在其他包中被引用。除了oject之外的每个类都是单个现有类的一个扩展(既子类),并且可以实现接口。类可以是泛化的,既他们可以声明类型变量,这些类型变量的绑定在该类的不同实例中是不一样的。
类可以用注解装饰,就像其他种类的声明一样。
类体声明了成员(域,方法,嵌套类与接口)、实例和静态初始化器,以及构造器。成员的作用域是该成员所属的类的整个声明体。域,方法,成员类,成员接口和构造器的声明可以包含访问修饰符public,protected,private。类的成员包括声明的和继承的成员。新声明的域可以隐藏在超类或超接口中声明的域,而新声明的类成员可以隐藏在超类或超接口中声明的类或接口成员,新声明的方法可以隐藏在超类或超接口中声明的方法。
域声明描述了类变量和实例变量。域可以被声明为final,此时他只能被赋值一次,任何域声明都可以包含初始化器。
成员类声明描述了嵌套类,他们是其包围类的成员。成员类可以是static的,此时他们不能访问包围类的实例变量;成员类还可以是内部类。
成员接口声明描述了嵌套接口,他们是包围类的成员。
方法声明描述了可以通过方法调用表达式调用的代码。类方法可以在相关的类类型上调用,而实例方法需要在作为类类型的实例的特定对象上调用。方法的声明如果没有说明他是如何实现的,那么他就必须被声明为abstract。方法可以声明为final的,此时他不能被隐藏或覆盖。方法可以用平台相关的native代码实现,而synchronized方法会自动地在执行方法体之前锁定该对象,并会自定地在返回时解锁该对象,就像是通过适应synchronized语句来实现一样,这样就使得他们的行为与其他线程中的方法进行了同步。
方法名可以被重载。
案例初始化器是可执行代码块,他们可以用来在实例被创建时帮助对其进行初始化。
静态初始化器也是可执行代码块,他们可以用来帮助初始化类。
构造器与方法类似,但是不能通过方法调用来直接调用,他们用来初始化新的类实例。与方法一样,他们可以被重载。