Java是一門面向對象的編程語言,封裝是其中的一項重要特性。封裝可以將類的內部細節隱藏起來,對外提供簡單易懂的方法。在Java中,通過訪問修飾符來實現封裝,并且常用的有public、private、protected、default。
//一個簡單的封裝示例 public class Person { private String name; public void setName(String newName) { name = newName; } public String getName() { return name; } }
在這個示例中,name屬性被聲明為private,只能在Person類內部使用。setName()和getName()方法提供了對外操作的接口。
反射是Java中一項高級特性,可以讓程序在運行時動態地獲取類的信息,并且可以操作類的各種成員。在Java反射中,常用的類包括Class、Construtor、Method、Field。
//一個簡單的反射示例 public class ReflectionDemo { public static void main(String[] args) throws Exception { Class>cls = Class.forName("Person"); Object obj = cls.newInstance(); Method setNameMethod = cls.getMethod("setName", String.class); setNameMethod.invoke(obj, "John"); Method getNameMethod = cls.getMethod("getName"); String name = (String) getNameMethod.invoke(obj); System.out.println(name); //輸出:John } }
在這個示例中,使用Class.forName()方法動態地加載Person類,然后使用Class.newInstance()方法創建一個Person對象。通過Class.getMethod()方法和Method.invoke()方法可以對Person類的方法進行調用和操作,并最終獲取到Person對象的name屬性值。
封裝和反射都是Java中強大的面向對象特性,都能讓程序更加靈活和強大。