我想为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
答案 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
的公共方法。