2014-02-25 121 views
1

我有一个抽象类..为什么一个类返回自己的一个实例?

public abstract class MHandle { 
    public MHandle getMHandle(){ 
     return this; 
    } 
} 

我也有叫楼

public class House extends MHandle{ 
    public void methodA(){ 
    } 
} 

另一个类会是什么做这样的事情

public void methodA(){ 
    MHandle mh = getMHandle(); 
} 
+0

不能理解问题 – Kick

+0

'abstract'类的'instance'?^_^OOP中断。 –

+0

无论在哪个类中定义方法,它都会返回相同的实例,因此它是完全没有意义的。在任何情况下,你都可以调用'''getMHandle()'',你可以更容易地调用''''this'''或使用你要调用它的实例。 – NeplatnyUdaj

回答

5

点是绝对没有区别:

public void methodA(){ 
    MHandle mh = getMHandle(); 
    mh.toString(); 
} 

public void methodA(){ 
    this.toString(); 
} 

public void methodA(){ 
    toString(); 
} 

public void methodA(){ 
    this.getMHandle().getMHandle().getMHandle().getMHandle(). 
     getMHandle().getMHandle().toString(); 
} 

这种非差别是在任何情况下正确的。对于MHandle类或其具体子类(例如House)的内部,以及对类或不具有访问MHandle类的类。我完全没有看到getMHandle()这一点,如果它只是返回一个没有做有用的的自我参考。

+0

请记住,如果我们推广呢? 为什么一个类在任何情况下都会返回自己的一个实例? – Anon84858789

+0

我想不出有什么理由这样做。你*可以*,但它是毫无意义的。如果一个类有对另一个类的引用,那么'[a-class-instance-which-I -ly-already-have-an-an-instance-of] .getInstanceOfThatClass()'是什么意思?你可以做同样没有意义的'[a-class-instance-which-I -ly-already-have-an-instance-of] .getInstanceOfThatClass()。getInstanceOfThatClass()。getInstanceOfThatClass()。getInstanceOfThatClass()。 getInstanceOfThatClass()。getInstanceOfThatClass()。getInstanceOfThatClass()。getInstanceOfThatClass()'。他们是平等的。 – aliteralmind

+1

匿名,返回“自己”的副作用是可以将更多的代码写入单个语句。例如,来自StringBufffer的追加方法。 'StringBuffer sb = new StringBuffer(); sb.append(“a”)。append(“b”)。append(“c”);'有效。 – munyul

0

这将返回House实例,因为它扩展了MHandle。

相关问题