2015-10-06 71 views
-4

对象让我们假设有:简单的方法来创建一个从基类

class A { 
} 

class B extends A { 

    B(A object) { 
    this = object; //this is not possible. 
    } 
} 

我们知道,我们不能设置在爪哇(本)的任何值的关键字。有没有简单的方法来创建与A对象具有相同字段值的B对象?

+2

你的意思是如何创建一个拷贝构造函数的最简单的方法? –

+0

yeap。这是非常荒谬的问题吗?我得到了负面的点 – user14570

+1

我不认为这是荒谬的,但看起来你甚至没有尝试过。我只是简单地在基类和子类中调用'super(a);'创建拷贝构造函数。现在,如果你天真地问*我应该手动生成几个字段的副本吗?答案是:确保它通过手动或代码生成工具完成,但代码必须在那里。 –

回答

2

最简单的方法是逐个复制所有字段。没有更简单的方法。你可以写一个工具为你生成这段代码。总的来说,这在Java中可以避免(可能是因为它很痛苦且容易出错),而且如果没有更简单的解决方案来解决问题,通常会使用委派。即通常有替代方案。

+0

嗯,我明白了。顺便说一下,Java是否具有:像C#那样的新A(){this.f = f,...}语法呢? – user14570

+1

@ user14570,这个系列演示了您必须学习Java的基础知识。如果你不会花时间去学习基础知识,不要急于完成某些事情。 –

1

这不能作为变量这是最后一个。所以,你可以做这样的事情:

public class A { 

     private String hello; 
     private String something; 

     public A(String hello, String something){ 
      this.hello = hello; 
      this.something = something; 
     } 

     public String getHello() { 
      return hello; 
     } 

     public void setHello(String hello) { 
      this.hello = hello; 
     } 

     public String getSomething() { 
      return something; 
     } 

     public void setSomething(String something) { 
      this.something = something; 
     } 

} 

然后,您可以使用A类B中,如下:

public class B extends A{ 

     public B(A object) { 
     super(object.getHello(),object.getSomething()); 
     } 

    } 
相关问题