我对Java有些新意,我想知道是否有办法以某种方式改变类的功能。
Class pager = new Pager();// everything is initialized
pager.dostuff() = function(){};
是否有特定的名称,是否可以用Java做?如果没有,是否有允许它的语言?
感谢您的时间。
编辑:
澄清这个问题,因为最初似乎我想用不同的函数初始化新类。事实并非如此。我想在它已经创建之后改变它。这样做的原因是我和android一起工作,我得到的是来自xml。是否有可能改变班级'我得到这样的课程时的功能吗?
Pager pager = (ViewPager) findViewById(R.id.pager)
我觉得我必须要创建一个新课程,这很好,但我想知道我是否可以这样做。
答案 0 :(得分:5)
在java中,您可以在运行时覆盖方法,如 -
Pager pager = new Pager(){
@Override
public void dostuff(){
....
}
};
运行时它将创建Pager的子类并覆盖doStuff
方法。
答案 1 :(得分:1)
当然..通过一个匿名的内部类覆盖一个类,同时继承被覆盖的类的所有属性。
Pager pager = new Pager(){
public void dostuff(){
....
}
}
PS: - 注意,在匿名内部类之外,您可以通过您的匿名内部类的实例仅调用父类中存在的那些方法
答案 2 :(得分:0)
Java不提供像这样的功能。 也许您可以覆盖子类中的函数。
您在上面展示的内容可以在Ruby中完成(我认为)。
覆盖
Pager pager = new Pager() {
@Override
public void doStuff() {
doSomethingElseFunct();
}
};