您的位置:首页 > 编程语言 > Java开发

[Java问题] 继承方法调用问题

2015-01-24 10:55 211 查看
  由于用java的时间不长,一上来就让我把一个软件从matlab移到java中,所以不断出现了很多问题,解决这些问题最快的方法就是写一些小代码调试和上网问度娘,另一个方法是问师兄,但是跟他们描述一个问题的时候比我上网搜发的时候还多,另外他们也未必知道答案,所以第二个方法我很少用,这也是我写这篇文章的原因,把问题写下来,慢慢思考,随着java技术的增进,说不定会解决,即使不能解决,下一次编程的时候,我也知道这样编写代码是不能达到我的要求的,要换一中方法。

  说了这么多,来说我遇到的继承方法调用的问题吧,来看一个例子:

  文件1名称:First.java

public class First
{
  private double a =10;
   private double b =20;

public First()
{

}

public First(double a,double b)
{
  this.a =a ;
  this.b =b;
}

public double getA()
{
  return a;
}

public double getB()
{
  return b;
}

}

  

  文件2名称:Second.java

public class Second extends First
{
  private double a;
  private double b;
  First first ;

public Second (First first)
{
  this.first = first;
  a = first.getA();
  b = first.getB();
}

}

  文件3名称:test.java(主函数所在的文件)

public class test
{
public static void main(String [] args)
{
  First firstMain = new First(30,40);
  Second SecondMain = new Second(firstMain);
  double testa = SecondMain.getA();
  double testb = SecondMain.getB();
  System.out.println(testa);
  System.out.println(testb);
}

}

主函数用Debug调试截图:









输出结果是:10 ,20.很显然这并不是我想要的答案,我要的答案是30 ,40.

对文档1中的方法在文档2中重写,就可以得到我想要的答案.具体如下:

  在文档2中添加getA()和getB()方法,即重写(@Override)。

  对主函数调试结果如下:

  




  

对以上问题,换一个思路考虑,如果不采用继承,在文档2中在一次写getA()和getB()方法,即文档2的完整java程序如下:

public class Second //此处与前面的文档2不一样,这里不再是extends继承关系
{
  private double a;
  private double b;
  First first ;

public Second (First first)
{
  this.first = first;
  a = first.getA();
  b = first.getB();
}

public double getA()
{
  return a;
}

public double getB()
{
  return b;
}

}

其他文档程序不变,调试结果如下:









答案也是我想要的30、40.

  

  虽然这两种方法都可以达到我要的结果,但是使用extends可以节省重复输入代码,所以,如何使用继承关系达到我想要的结果,目前我没有办法解决。

P.S.

  比较有继承和无继承变量SecondMain时很容易就可以理解继承和无继承的区别:

  (再次把截图附在附上:如下)

  




         继承关系SecondMain变量截图                   无继承关系的SecondMain变量截图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: