如何实现越过包级私有,访问protected中的属性大一新生,刚刚接触,有写的不对的地方,还望各位前辈多批评指正,阿里嘎多:
\quad\quad当我们在类中新建一个静态工厂方法时,public class Person { static Object CreatePerson(){ return new Person(); } }
\quad\quad 如果想在其他方法中调用CreatePerson方法创建Person类,那么按道理是只能在同一个Package中才能调用该方法。例如这样:(Person与Metting类在同一个包中)
public class Metting { public static void main(String[] args) { Object person = Person.CreatePerson(); } }
如果在另一个包中使用该方法时:
public class Metting { Object person= Person.CreatePerson(); }
程序会提示CreatePerson()这个方法不是公有的,不能使用。\quad\quad 那么当我们想越过包级私有,在不同的包中去调用该静态工厂方法去创建一个Person时,需要做些什么东西呢?
\quad\quad 首先,我们需要在Person所在的包中,新建一个名为Bridge的Class(如果是来自com的类,则需要先建立一个与该类相同地址、相同名称的Package,再在该类中建立一个Bridge类),然后在该类中建立静态工厂方法,用以返回一个Person类,代码如下:public class Bridge { public static Object CreatePerson(){ return new Person(); } }
这时候已经暴露了一个public接口,所以自然而然的,可以在其他包中调用CreatePerson()方法,效果如下:
各个类之间的包级关系如下:![]()
如何实现越过包级私有,访问protected中的属性
最新推荐文章于 2024-03-12 20:38:01 发布