這是網(wǎng)友給的兩個(gè)代碼,如果您對(duì)類,接口還不甚明白建議看前面一篇文章;
本人先指出:書寫Java時(shí)可以用extends,implements從interface 和class產(chǎn)生出新類;
問題: +++++++++++++++++++++++++++++++++++++++++++++
這里的ActionListener為指定父類;
class ActionListener1 implements ActionListener{}? //創(chuàng)建一個(gè)繼承類ActionListener的類ActionListener1
interface ActionListener1 extends ActionListener{} //創(chuàng)建一個(gè)來自類ActionListener的接口ActionListener1
如果我不創(chuàng)建實(shí)例,只想方法重載,是不是都可以用
++++++++++++++++++++++++++++++++++++++++++++++++
很明顯按前面講的extends,implements從interface 和class產(chǎn)生出新類,這兩個(gè)辦法都可以
但這樣講這篇文章實(shí)在是太簡(jiǎn)單了,雖然有時(shí)候,簡(jiǎn)單,不錯(cuò)
但在這里我看到另一個(gè)問題,就是這里的extends,implements
有何不同
,
前面已經(jīng)把interface 和class
給大家解釋一番,接下來我們來搞定extends,implements,呵呵
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
extends,implements分析
一般說法是:類繼承( extends
)/ 接口實(shí)現(xiàn)( implements)
一個(gè)類繼承了上一個(gè)類?? /? 一個(gè)接口寬展了N個(gè)類的M個(gè)接口(類:大寫字母;接口:小寫字母)
class A?implements B{} / interface a extends A ,B,C... implements b ,c ,d ....{}
但有個(gè)問題要指明:接口 a 將只能被寬展 不能繼續(xù) 在 a下創(chuàng)建類,并且很明顯要調(diào)用 a 中的方法,將會(huì)有一定的局限性,
因?yàn)樗麤]有被實(shí)例化(有點(diǎn)像臨時(shí)演員,演完這個(gè)節(jié)目之后,下個(gè)節(jié)目要找他來演就很難了),在JAVA中有個(gè)專業(yè)名詞專門
形容他---“輕量級(jí)”組件。很明顯,演戲(程序),導(dǎo)演(編程人員)不能什么角色都臨時(shí)演員,因?yàn)橐隼m(xù)集;但有時(shí)很
需要,因?yàn)檫@樣省錢(系統(tǒng)資源)、靈活。
所以,這些情況要看情況,這就是:好導(dǎo)演,花少錢,排好戲。
前面,我說了要對(duì)extend和implements來個(gè)解剖,好了現(xiàn)在問題初步弄清楚就是:重量級(jí)(class)和輕量級(jí)(interface)
問題。我們先講到這里,我要
了;下面給大家一個(gè)關(guān)于輕量級(jí)組件swing的說明,希望大家看看:
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/javax/swing/tree/class-use/DefaultMutableTreeNode.html
然后來個(gè)例子:
JAVA如何利用接口制造類似于C++的多繼承
作者: daywolf 的 Blog 出處:http://www.csdn.net/
多繼承其實(shí)是不好的東西,但是你有時(shí)候卻要用到它,那怎么辦呢?可以利用接口,下面是一個(gè)簡(jiǎn)單的例子。
interface CanFly
{
?void fly();
}
interface CanSwim
{
?void swim();
}
interface CanFight
{
?void fight();
}
class ActionCharter
{
?public void fight()
?{
?System.out.println("I can fight");
?}
}
class Hero extends ActionCharter implements CanFly,CanSwim,CanFight
{
?public void swim(){
?System.out.println("I can swim");
?}
?
?public void fly(){
?System.out.println("I can fly");
?}?
}
public class HelloWorld
{
?public static void u(CanFly i){i.fly();}
?public static void v(CanSwim i){i.swim();}
?public static void w(CanFight i){i.fight();}
?public static void x(ActionCharter i){i.fight();}
?
?public static void main(String []args)
?{
?Hero hero = new Hero();
?u(hero);
?v(hero);
?w(hero);
?x(hero);
?}
?
}
講解一下,這個(gè)例子里面在Hero繼承了一個(gè)類ActionCharter來實(shí)現(xiàn)接口CanFight的功能,另外兩個(gè)接口用方法實(shí)現(xiàn),而在運(yùn)行的時(shí)候采用動(dòng)態(tài)綁定,來進(jìn)行多態(tài)的實(shí)現(xiàn),這個(gè)例子很簡(jiǎn)單,但是用在實(shí)際上卻很有用
地震讓大伙知道:居安思危,才是生存之道。
posted on 2007-02-27 08:55
小尋 閱讀(177)
評(píng)論(0) 編輯 收藏 所屬分類:
j2se/j2ee/j2me