Java中的引用是灵活的,因为它们允许你在运行时更改对象所引用的内存地址。这意味着你可以使用引用来实现多态、动态绑定和垃圾回收等功能。以下是一些Java引用灵活性的例子:
public interface Animal { void makeSound(); } public class Dog implements Animal { @Override public void makeSound() { System.out.println("Woof!"); } } public class Cat implements Animal { @Override public void makeSound() { System.out.println("Meow!"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Dog(); // 使用Dog类型的引用引用Dog对象 myAnimal.makeSound(); // 输出 "Woof!" myAnimal = new Cat(); // 使用相同的引用引用Cat对象 myAnimal.makeSound(); // 输出 "Meow!" } }
public class Animal { public void makeSound() { System.out.println("The animal makes a sound"); } } public class Dog extends Animal { @Override public void makeSound() { System.out.println("The dog barks"); } } public class Main { public static void main(String[] args) { Animal myAnimal = new Dog(); myAnimal.makeSound(); // 输出 "The dog barks" } }
public class Main { public static void main(String[] args) { Object obj = new byte[1024 * 1024]; // 创建一个1MB的对象 obj = null; // 将引用设置为null,使其不再被引用 System.gc(); // 提示JVM进行垃圾回收 } }
总之,Java中的引用非常灵活,它们允许你实现多态、动态绑定和垃圾回收等功能。这些特性使得Java成为一种强大的面向对象编程语言。