Java是一門面向對象的編程語言,繼承和代理是面向對象編程中常用的兩種技術。繼承可以使子類繼承父類的屬性和方法,而代理則是通過代理對象來間接訪問目標對象。
在Java中,使用extends關鍵字實現繼承,比如:
public class Animal { public void eat() { System.out.println("Animal eats."); } } public class Dog extends Animal { public void bark() { System.out.println("Dog barks."); } }
在這個例子中,Dog類繼承了Animal類,并且Dog類可以使用Animal類中定義的eat()方法。同時,Dog類也新增了一個bark()方法。
代理則是使用一個代理對象來訪問目標對象。在Java中,代理對象需要實現一個與目標對象相同的接口,比如:
public interface Teacher { void teach(); } public class EnglishTeacher implements Teacher { public void teach() { System.out.println("Teach English."); } } public class TeacherProxy implements Teacher { private Teacher teacher; public TeacherProxy(Teacher teacher) { this.teacher = teacher; } public void teach() { System.out.println("Before teaching, prepare the materials."); teacher.teach(); System.out.println("After teaching, give a test."); } }
在這個例子中,TeacherProxy類是一個代理對象,它實現了與目標對象EnglishTeacher相同的Teacher接口,并且在代理的teach()方法中,先執行一些準備工作,然后調用目標對象的teach()方法,最后再做一些后續處理。
繼承和代理都是面向對象編程中重要的技術,在不同的場景中應用不同。使用繼承時要注意避免多層繼承導致的復雜度和耦合度增加,而代理則可以用來實現AOP編程思想中的切面,實現對目標對象的統一處理。