作者hugh509 ((0_ 0))
看板java
标题[问题] 新手入门 关於宣告与定义
时间Mon Feb 23 13:28:31 2015
最近开始想学Java
先是看thenewboston的入门影片
他的影片都满简单的,可是怕有模糊的地方
就找了中文的资源<程式语言教学志>来看,其中有一个例题是这样
class test {
int fu(
int s) {
if (s == 0 || s == 1) {
return 1;
}
else {
return fu(s - 1) + fu(s - 2);
}
}
public static void main(String[] args) {
test v =
new test();
int s = 5;
while (s > 0) {
System.
out.println(v.fu(s));
s--;
}
}
}
这题执行出来的结果,让我完全抓不到头绪
先说一下我对这段的理解
int s = 5 , 作回圈直到s不大於0
当s等於0或s等於1时回传1,反之则回传fu(s - 1) + fu(s - 2)
然後印出v.fu(s)的数值并断行,s每次执行後递减
其中对else的话,return的fu()中的s值为什麽不是5开始
将5代入fu()然後回传数值,再来4..3..2..1,是哪一段有理解错误?
再来是继承的疑问,因为不是相关科系的
而且算刚入们程式语言所以对这些继承的方式感觉很疑惑
对程式语言基础很薄弱,本来的认知是
爸爸的车(父)
颜色:蓝色的,款式:五门,种类:跑车,轮胎:四颗米其林轮胎
驾驶习惯:爸爸最高只用4档行驶
儿子的车(子)继承(父)
轮胎是四颗普利司通轮胎,儿子会用到6档
只要将轮胎和开车习惯重新定义就好
没想到现在看到的例题大部分是这样
儿子的车(子)继承(父)
颜色:蓝色的,款式:五门,种类:跑车,轮胎:四颗普利斯通轮胎
驾驶习惯:儿子最高会用到6档行驶
这样不就跟再重新打一遍一样?
那使用或不使用继承看起来差别没有很大
因为通常都还是要指定儿子的车(子)才会执行(子)
还是对继承观念上的错误实在很大?
欢迎各位指教,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.118.188.217
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1424669317.A.CFF.html
1F:→ lucky1lk: 1.你知道recursive吗? 2.物件化 请参考软体工程 02/23 13:36
第一个问题懂了XD,因为一直把fu(s-1)和fu(s-2)的数值直接相加
2F:→ fireslayer: 你应该先定义"车" 02/23 14:13
3F:→ fireslayer: 然後四轮车 两轮车 六轮车(?) 几门? 颜色? 02/23 14:14
4F:→ fireslayer: 有些会有属性 有些会用继承 看情形自己设计 02/23 14:14
好像懂了 所以必须先定义(车)然後继承给(父)、(子)
(车)
颜色
1=蓝色,2=红色,3=白色
款式
a=五门,b=四门,c=双门
种类
q=跑车,w=轿车,e=休旅车...等
再来建构车子
颜色=1,款式=a,种类=q...等
这样继承给(父)或(子)时
就不用再告诉它,1=蓝色、2=红色...等定义
是这个意思吗?
※ 编辑: hugh509 (122.118.188.217), 02/23/2015 14:38:40
5F:→ pzyc79: 继承可以使得子类别具有父类别的各种属性和方法,而不需要 02/23 19:17
6F:→ pzyc79: 再次编写相同的代码 02/23 19:18
7F:→ pzyc79: 所以你说跟重新打一遍一样 是的 但是就是不需要重新打一遍 02/23 19:18
8F:→ fireslayer: 车是比如"摩托车" "跑车" "计程车"继承"车" 02/23 21:45
9F:→ fireslayer: 谁的车谁的车通常是创造不同的object就好了 02/23 21:45