本帖最后由 张权 于 2013-3-8 07:48 编辑
韩松范 发表于 2013-3-8 02:27
这跟程序运行大不大有什么关系?
实现不也要在类中复写方法吗?是我没听懂你说的,还是我们说的根本就不 ...
楼主,其实以前我也和你有过同样的想法,到后面你就会慢慢明白的:
楼上的说的是,在实际项目开发中,都是人家写好的接口,然后咱码农再去实现的,不和图纸是一样么,你学的太死了:
interface ShangWang {
public abstract void ShangWang();
}
abstract class ShouJi {
abstract void DaDianHua();
}
//第一代 手机
class ShouJi1 extends ShouJi {
public void DaDianHua() {
System.out.println("打电话");
}
}
//第二代手机升级,手机有上网功能
class ShouJi2 extends ShouJi implements ShangWang {
public void DaDianHua() {
System.out.println("打电话 ");
}
public void ShangWang() {
System.out.println("上网");
}
}
public class Demo {
public static void main(String[] args) {
//如果我现在既要生产只打电话的手机 (ShouJi1),又要生产既打电话又上网的手机(ShouJi2)
//生产只打电话的手机
ShouJi1 s1 = new ShouJi1();
s1.DaDianHua();
//生产打电话和上网的手机,这里有个问题,如果现在我有N多款手机,有几万行代码,我要单独来
//生产这款手机,怎么办,如果不用接口,几万行代码,你知道哪个是生产有上网功能的手机,
//而且,公司项目是N多人去做的,各负责一块,假如没有接口,你一个同事吧上网功能这个方法定义成
//net,一个同事又把上网这个方法定义成SurfTheInternet,那么当你们整个项目做完,你觉得你们
//编写的程序还能正常运行吗?其实这个就是何红卫说的那样,我只是再补充了下.
//你应该还没有学到匿名内部类,如果有接口还可以创建匿名内部类.还可以实现多态等好处,
//因为自身水平和举例代码的不太好,我就不举例多态和匿名内部类了,那样也很麻烦,以后你就明白了,
ShouJi2 s2 = new ShouJi2();//代码多了,你知道ShouJi2那个类就是那款既打电话,又上网的手机吗?
s2.DaDianHua();
s2.ShangWang();
}
}
//接口多态,这个想了下,还是举个例子,但是你要是想不通就别想了,搞明白上面说的就好了,举这个例子是怕你不明白多态:
interface ShangWang {
public abstract void ShangWang();
}
class ShouJi1 implements ShangWang {
public void ShangWang() {
System.out.println("上网下载");
}
}
class ShouJi2 implements ShangWang {
public void ShangWang() {
System.out.println("上网聊天");
}
}
public class Demo {
public static void main(String[] args) {
ShangWang sw = new ShouJi1();
ShangWang sw1 = new ShouJi2();
sw.ShangWang();
sw1.ShangWang();
}
}
|