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成為一種強大的面向對象編程語言。