作者image73 (风中梦想水中流)
看板java
标题[问题] Jave继承与共用类别的差别
时间Sat Mar 19 14:22:03 2016
想请教版上大大~
若有两个calss都有一样的method且实作都一样
public class A {
....
private void methodABC {
.....
}
}
public class B {
.....
private void methodABC {
}
}
目前想到两个方式不用维护两边的code:
想要把method1()的实作抽出来,如此程式就不用维护两个地方
目前想到:
方法一:把共用抽成父类别(C)
public class C {
public mehotdABC(){
}
}
public class A extends C {
super.methodABC();
}
publlic class B extends C {
ssuper.methodABC();
}
方法二:抽成共用类别
public static class commomUtils {
public void methodABC(){
}
public classA {
commonUtils.methodABC();
}
public classB {
commonUtils.methodABC();
}
以上两种方法都可以达到只维护一边程式
但不知道哪个方式比较适合?
再请教版上大大了
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.134.38.55
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1458368531.A.972.html
1F:→ ssccg: 继承是定义类别间的关系,不只是程式共用 03/19 14:44
2F:→ ssccg: 看你的A B是不是真的可以有个共通的父类别且methodABC真的 03/19 14:45
3F:→ ssccg: 是那个父类别的行为 03/19 14:45
4F:推 Frozenmouse: 如果能把A和B当成C看待,再来考虑继承 03/19 15:54
5F:→ Frozenmouse: 如果A和B之间八竿子打不着那就用方法二 03/19 15:55
6F:→ james732: is与has的差别? 03/19 17:10
7F:推 dream1124: 看需求啊, 如果像一楼讲的, AB都是共用C, 那就继承 03/20 01:14
8F:→ dream1124: 反之就是第二种方法抽共用 03/20 01:14
9F:→ cha122977: 两者关系先搞清楚,别为了共用而随便继承@@ 03/20 02:58
10F:推 HuangJC: 如果暂时无法决定,那可以参考 SDK 与 MFC 的关系 03/22 13:44
11F:→ HuangJC: SDK 是一大堆 c standard, 没有 this 指标,但参数很多 03/22 13:44
12F:→ HuangJC: 使用不易;在其上架起 MFC 是 c++ interface,才去描述继 03/22 13:45
13F:→ HuangJC: 承关系。 03/22 13:45
14F:→ HuangJC: 可以说两个方式都用上了;但你如果'先'继承,那被包在里 03/22 13:46
15F:→ HuangJC: 面的函式可以说是抽不出来了.. 03/22 13:46
16F:→ HuangJC: 变成要使用这个函式,就免不了先替它生一个物件.. 03/22 13:47
17F:→ ssccg: 怎麽会抽不出来,父类别那个method里的实作直接抽出来成 03/22 19:43
18F:→ ssccg: static method,原method再去call就好了 03/22 19:44
19F:→ ssccg: 重点还是在继承不只是程式共用 03/22 19:46
20F:推 HuangJC: 所以我想了很久,用"可以说是"这个字眼,代表还有点余地 03/24 13:44
21F:→ HuangJC: 如果用继承达成自然共用,很大的问题是函式被划在某个圈 03/24 13:44
22F:→ HuangJC: 圈里;没划在这个圈圈里的,以後"可以说是"无法使用它了 03/24 13:45
23F:→ HuangJC: 当然用 public static 可以拉出来;事实上 compiler 实作 03/24 13:45
24F:→ HuangJC: puclic static 和 global 差不多啊 :P,都没有 this 指标 03/24 13:46
25F:→ HuangJC: 而先写一堆 global,彼此间完全平等,再往上架会容易点 03/24 13:46
26F:→ HuangJC: 几年前我参与一个专案,以同一套逻辑套在两百个型号的手 03/24 13:47
27F:→ HuangJC: 机上,当时我们很自然一支手机一个 class(下班再说) 03/24 13:47