本文主要介绍了面向对象程序设计的基础知识,特别是关于Java中的类加载、类属性、类方法、包、限定符、接口以及内部类的概念。
在Java编程中,类的加载是由JAVA解释器自动进行的,通常在创建类的实例或者首次访问类的静态成员时触发。加载过程遵循以下步骤:
1. 使用环境变量CLASSPATH定义的目录作为搜索起点。
2. 将包名中的小数点替换为斜杠,形成查找路径。
3. 在指定路径下查找对应的.class文件。
类属性分为两种:类变量(静态变量)和实例变量。类变量用`static`关键字标识,存储在类的内存区域,可供所有实例共享。例如:
```java
class ex {
int i; // 实例变量
static int j; // 类变量
static final int k = 10; // 静态常量
}
```
类变量可以用于实现不同实例间的通信,例如记录创建的实例数量:
```java
public class Count {
private int serial;
private static int counter = 0;
public Count() {
counter++;
serial = counter;
}
}
```
类变量可以直接通过类名访问,即使它们是非`private`的。如:
```java
public class StaticVar {
public static int x;
}
public class Test {
public void m() {
int m = StaticVar.x;
}
}
```
类方法(静态方法)也是与类关联而不是特定实例的方法,它们可以通过类名直接调用,无需创建实例。
此外,包(package)是组织Java类的一种方式,它提供了一种命名空间,防止类名冲突。例如,`import p1.p2.*;`导入了名为`p1.p2`的包下的所有类。在文件系统中,包名会映射到目录结构,例如`p1.p2`对应`p1/p2`或`p1\p2`(根据操作系统)。
限定符(access modifiers)包括`public`、`private`、`protected`和默认(包访问),它们控制类、方法和变量的可见性。
接口(interface)是定义行为的抽象类型,它只包含常量和抽象方法。接口可以被类实现(implements),以强制执行多继承的契约。
内部类(inner classes)是在其他类内部定义的类,它可以访问外部类的私有成员,提供更复杂的封装和抽象。
这些概念构成了Java面向对象编程的基础,它们是构建复杂、可维护的软件系统的关键元素。理解并熟练运用这些知识点对于任何Java开发者来说都是至关重要的。