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

  由于用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变量截图

 

转载于:https://www.cnblogs.com/jhsx/p/4245561.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值