引用是Java中非常重要的概念之一,它是指用于间接访问对象或数据的变量。Java中的引用有四种类型:类引用、对象引用、超类引用和接口引用。

1. 类引用

Java中的类引用是指对类的引用,它可以用来访问类中的静态成员变量和静态方法。类引用使用类名加点操作符来访问成员,例如:

public class MyClass {
    public static int myStaticVariable = 10;
    public static void myStaticMethod() {
        // do something
    }
}

// 类引用访问静态成员
int num = MyClass.myStaticVariable;
MyClass.myStaticMethod();

在上述代码中,我们通过类引用MyClass来访问静态成员变量myStaticVariable和静态方法myStaticMethod。

2. 对象引用

Java中的对象引用是指引用对象的引用变量,它可以用来访问对象的实例变量和实例方法。对象引用使用变量名加点操作符来访问成员,例如:

public class MyClass {
    public int myInstanceVariable;
    public void myInstanceMethod() {
        // do something
    }
}

// 创建对象引用
MyClass obj = new MyClass();

// 对象引用访问实例变量
obj.myInstanceVariable = 10;

// 对象引用访问实例方法
obj.myInstanceMethod();

在上述代码中,我们通过对象引用obj来访问实例变量myInstanceVariable和实例方法myInstanceMethod。

3. 超类引用

Java中的超类引用是指引用子类对象的父类引用变量,它可以用来访问子类对象的共有成员、继承成员和重写方法。超类引用可以用来实现多态性,例如:

public class Animal {
    public void eat() {
        System.out.println("Animal is eating...");
    }
}

public class Dog extends Animal {
    public void eat() {
        System.out.println("Dog is eating...");
    }
    public void bark() {
        System.out.println("Dog is barking...");
    }
}

// 创建超类引用
Animal animal = new Dog();

// 超类引用访问共有成员
animal.eat();

// 超类引用无法访问子类特有的成员
// animal.bark(); // 编译错误

在上述代码中,我们创建了一个超类引用animal,它引用了一个子类对象Dog。虽然超类引用无法访问子类特有的成员,但它可以通过重写的方法来实现多态性,这里调用了子类Dog的eat方法。