JAVA代理出现的原因:因为继承对子类暴露了全部的方法。
实现思路:既然基类的某些方法不想暴露,那么需要写一个中间类,在中间类中引用基类,暴露基类的一些方法。
具体实现代码如下:
public class Animal {
void a(){
System.out.println("吃饭");
}
void b(){}
void c(){}
void d(){}
}
public class DogAnimal{
private Animal animal = new Animal();
public void getA()
{
animal.a();
}
}
public class Dog extends DogAnimal{
public static void main(String[] args) {
Dog dog = new Dog();
dog.getA();
}
}
这样就实现了对基类方法的保护。