标签:
由于用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变量截图
标签:
原文地址:http://www.cnblogs.com/jhsx/p/4245561.html