继承的类,将所有继承的公共方法更改为private

时间:2014-09-29 15:53:09

标签: java android class inheritance private

我想为android创建自己的UI widget类,它是继承的LinearLayout类。

public class MyOwnClass extends LinearLayout {

    ...
    public void setSomeProperties(Object properties) { ... }

但LinearLayout有很多公共方法,我想要在我的类中定义的唯一公共方法。如何让MyLwnClass的实例无法访问LinearLayout的所有公共方法?

myOwnClass.setSomeProperties(properties); // only this should be accesible
myOwnClass.setBackground(...); // this should'nt be accesible

1 个答案:

答案 0 :(得分:5)

您应该使用合成而不是继承。

您可以通过在LinearLayout中包含MyOwnClass的isntance代替继承它来实现此目的。然后你可以选择哪些方法是公开的。

public class MyOwnClass {
    LinearLayout layout;

    public MyOwnClass ()
    {
        layout = new LinearLayout ();
    }

    // do the following only for methods of LinearLayout you wish to stay public in
    // new class 
    public SomeReturnValue someMethod (... someParams ...)
    {
        return layout.someMethod (... someParams ...)
    }
}

通过这种方式,您可以完全控制新班级用户仍然可以访问新班级中包含的LinearLayout的公共方法。