《面向?qū)ο筇卣鳌?ppt課件_第1頁
《面向?qū)ο筇卣鳌?ppt課件_第2頁
《面向?qū)ο筇卣鳌?ppt課件_第3頁
《面向?qū)ο筇卣鳌?ppt課件_第4頁
《面向?qū)ο筇卣鳌?ppt課件_第5頁
已閱讀5頁,還剩121頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Java言語程序設計劉玉江liuyujiang1126第三章 面向?qū)ο筇卣魇谡n內(nèi)容:根本概念類的定義對象類的承繼和多態(tài)接口和包常用工具類根本概念n什么是編程言語?n人和計算機進展交流的工具和手段n編程言語的開展n機器言語: 0101001n匯編言語: movn第三代言語: 高級言語,以C言語為代表,過程式編程言語n第四代言語: 非過程化/面向?qū)ο蟮木幊萄哉Zn面向?qū)ο髇面向?qū)ο缶幊?Object Oriented Programming-OOP)n面向?qū)ο笫且环N軟件開發(fā)的方法,“面向?qū)ο蟮姆治雠c設計 n第一個面向?qū)ο蟮难哉Z: Simula-67n第一個勝利的面向?qū)ο缶幊萄哉Z: Smalltalk

2、nC+, JAVA, C#, PERL等n用客觀世界中描畫事物的方法來描畫程序中要處理的問題n萬事萬物都是對象n程序便是成堆的對象,彼此經(jīng)過音訊的傳送,懇求其他對象進展任務 根本概念n五個根本概念n對象n類n封裝性n承繼性n多態(tài)性根本概念n對象 (object)n對象包含兩個特性n形狀: 指對象本身的信息(內(nèi)部信息/內(nèi)部變量)n行為: 實現(xiàn)對信息的訪問/對象的操作n標志: 代表對象的標識符n山地車的形狀(兩個車輪、一些齒輪、速度、擋數(shù)),行為(剎車、加速、減速和換擋)n書包含很多信息,擁有訪問所包含信息的方法,一頁一頁的看,經(jīng)過目錄找到感興趣的內(nèi)容根本概念n對象 (object)n形狀變量(v

3、ariables)n行為方法(method)n對象就是變量和相關(guān)方法的軟件集合n一個對象可以由其他對象組合而成,窗口(按鈕,菜單條,文本框,形狀欄等)n程序就是對象的集合,對象之間相互交互和通訊完成義務n搭積木根本概念n類 (class)n現(xiàn)實世界中,存在很多同類的對象,很多桌子、書、自行車n一種原型,一種籠統(tǒng),一種共性,一個模板n實例,某類對象的一個特定實體,類是對象的一個籠統(tǒng)根本概念n封裝性n模塊化-每個對象的源文件可以是相互獨立的,可以被不同的程序調(diào)用,每個對象是一塊積木,可以搭建不同的外形n信息隱藏-通常定義一個公共接口/方法實現(xiàn)對對象的訪問,可以調(diào)整對象的私有信息和方法,而不會對其他

4、調(diào)用它的對象產(chǎn)生影響n可重用性根本概念n承繼性運輸工具航空運輸工具陸地運輸工具水上運輸工具人力驅(qū)動引擎驅(qū)動二輪四輪客運貨運根本概念n承繼性n多重承繼類A類B類C類D類F類Gn一個類擁有多個父類產(chǎn)生二義性,例類C和類D都有一個同名的方法,類G?nJava中僅僅支持單一承繼,同時Java采用Interface(接口)實現(xiàn)多重承繼而防止父類二義性根本概念n多態(tài)性n表如今承繼中方法的重寫n子類從父類承繼(extends擴展)而來n多個子類同屬一個父類,一切子類有一樣的父類n承繼父類的方法n在不同的子類中有不同的表現(xiàn)方式n表如今用一個類中方法的重載根本概念n多態(tài)性n多態(tài)性在承繼中的表現(xiàn)根本概念n多態(tài)性c

5、lass Square extends Shape void draw() System.out.println(Square.draw(); void erase() System.out.println(Square.erase()“); class Triangle extends Shape void draw() System.out.println(Triangle.draw(); void erase() System.out.println(Triangle.erase(); class Shape void draw() void erase() class Circle e

6、xtends Shape void draw() System.out.println(Circle.draw(); void erase() System.out.println(Circle.erase(); 根本概念n多態(tài)性public class Test public static Shape randShape() switch(int)(Math.random() * 3) default: case 0: return new Circle(); case 1: return new Square(); case 2: return new Triangle(); public

7、 static void main(String args) Shape s = new Shape9; for(int i = 0; i s.length; i+) si = randShape(); for(int i = 0; i javac A.javax has private access in A a.x = 100; print() has private access in A a.print(); 2 errors類成員的訪問class A private int x;private void print() class B void test() A a = new A(

8、);a.x = 100;a.print();nprotected (維護變量/維護方法)n允許類本身、子類(有一定限制)以及同一個包中一切類訪問(先構(gòu)造對象,再訪問)類成員的訪問class A protected int x;protected void print() class B void test() A a = new A();a.x = 100;a.print();package abc;class A protected int x;protected void print() package xyz;import abc.A;class B extends A void tes

9、t(A a, B b) a.x = 100;a.print();b.x = 100;b.print();/illegal/illegal/legal/legaln無修飾 (友好變量/友好方法)n允許類本身以及同一個包中一切類訪問類成員的訪問class A int x;void print() class B void test() A a = new A();a.x = 100;a.print();package abc;class A int x;void print() package abc;class B void test() A a = new A();a.x = 100;a.pr

10、int();n小結(jié)名稱訪問權(quán)修飾符類本身子類包所有類公共public默認-保護protected *私有private* 指子類與父類不在同一個包中的情況類成員變量的訪問nstatic (靜態(tài)變量/靜態(tài)方法)n類的變量/方法,獨立于類的對象,可以直接根據(jù)類名調(diào)用nclass S nstatic int A = 12, B = 34;nstatic void print() nnclass Test npublic static void main(String args) nSystem.out.println(“A=“ + S.A + “ B=“ + S.B);nS.print();nn類成

11、員變量nstatic (靜態(tài)變量/靜態(tài)方法)class Test public void print(int x) System.out.println(x); public static void main(String args) int x = 3;print(x);D:javac Test.javaTest.java:9: non-static method print(int) cannot be referenced from a static context print(x); 1 errorclass Test public void print(int x) System.o

12、ut.println(x); public static void main(String args) int x = 3;Test t = new Test();t.print(x);class Test public static void print(int x) System.out.println(x); public static void main(String args) int x = 3;print(x);static方法中僅僅可以調(diào)用其他static方法類成員nfinal 變量/方法nfinal變量: 定義一個常數(shù),即變量值不能改動nfinal double AVOGAD

13、RO = 6.022e23;nfinal類: 不能有子類nfinal方法: 方法不能被重寫(overriding)nclass ChessAlgorithm n . . .n final void nextMove(ChessPiece pieceMoved,n BoardLocation newLocation) n .n n . . .n類成員變量n非訪問控制修符n靜態(tài)方法staticn屬于類的方法n最終方法finaln不能被子類重新定義的方法n籠統(tǒng)方法abstractn只需方法闡明,沒有詳細實現(xiàn)n本地方法nativen以其他言語實現(xiàn)方法功能n同步方法synchronizedn用于多線程程

14、序中的協(xié)調(diào)和同步類成員方法的訪問n例成員方法class Test public static void main(String args) double d_product;Area myArea;myArea = new Area(); d_product = myAduct();System.out.println(“myArea的面積是: + d_product);class Area double width, height; void setV(double w, double h) width = w;height = h; double product() retu

15、rn width*height;n方法參數(shù)成員方法public static void main(String args) int x=3, y=4;Test p = new Test();System.out.println(x + + y);p.addI(x, y);System.out.println(x + + y);Vector c = new Vector();c.addElement(s1);c.addElement(s2);System.out.println(c.size();p.addV(c);System.out.println(c.size();import java.

16、util.Vector;class Test private void addV(Vector v) v.addElement(s3); private void addI(int i1, int i2) i1 +; i2 +; 形參和實參D:java Parameter3 43 423留意1: 類型匹配留意2:根本類型與復合類型參數(shù)傳送的結(jié)果不同n例成員方法class Test public static void main(String args) ex A = new ex();A.p();class ex int u, v;void p2(int x, int y) int i, j;

17、for (i=1; i=x;i+) j = y+i; System.out.print(j+“ ); void p( ) u=3; v=2; p2(u, v);System.out.println();u+=v; v*=u; p2(u, v); u=3; v=2;u=5; v=10;輸出結(jié)果:3 4 511 12 13 14 15n方法的重載(overload)n方法名一樣,但方法的參數(shù)不同n方法描畫 方法名(標識符) 參數(shù)類型 方法前往值 n絕對值 abs(a) int intn絕對值 abs(a) long longn絕對值 abs(a) float floatn絕對值 abs(a) do

18、uble doublen npublic static int abs(inta) npublic static long abs(longa) npublic static float abs(floata)npublic static double abs(doublea) 成員方法n方法的重寫(overriding)n子類重寫父類的方法成員方法class Father void display( ) ; class Son extends Father void display() ; Father f = new Father();f.display();Son s = new Son

19、();s.display();構(gòu)造方法n創(chuàng)建對象/實例化對象new n例1: Apple a = new Apple(); (創(chuàng)建對象)n例2: Apple a; (對象的闡明)n a = new Apple(); (實例化對象)n對象的實例化經(jīng)過構(gòu)造方法(constructor)來實現(xiàn)n構(gòu)造方法的名字與類名一樣n構(gòu)造方法沒有前往值n構(gòu)造方法可以有多個,構(gòu)成方法的重載(overload)n例: 對象的實例化和初始化class jex6_8 public static void main(String args) Qangle q1 = new Qangle(); Qangle q2 = new

20、 Qangle(20, 50); Qangle q3 = new Qangle(q1); System.out.println(q1.width() +“ +q1.height(); System.out.println(q2.width() +“ +q2.height(); System.out.println(q3.width() +“ +q3.height();class Qangle int a, h;Qangle () a = 10; h = 20;Qangle(int x, int y) a = x; h = y;Qangle(Qangle r) a = r.width(); h

21、= r.height();int width() return a;int height() return h;輸出結(jié)果: 2020 5010 20構(gòu)造方法n方法的重載(overload)構(gòu)造方法class Tree int height; Tree() prt(“Planting a seeding); height = 0; Tree(int i) prt(“Creating new Tree that is + i + “ feet tall);height = i; void info() prt(“Tree is + height + “ feet height); void inf

22、o(String s) prt(s + “: Tree is + height +“ feet height); static void prt(String s) System.out.println(s); for (int i =0; i 5; i+) Tree t = new Tree(i); (); (“my tree);new Tree();n默許構(gòu)造方法n例 class Apple nint color; nnApple a = new Apple();n對象實例的判別: nulln例 Apple a;n if (a = null) nSystem.out

23、.println(“Day dream);構(gòu)造方法運轉(zhuǎn)時系統(tǒng)自動賦予一個空構(gòu)造函數(shù)如 Apple() n構(gòu)造方法構(gòu)造方法 class Cmethod Cmethod (boolean b) public static void main (String args) Cmethod c1 = new Cmethod(); Cmethod c2 = new Cmethod(false); class Cmethod Cmethod (boolean b) public static void main (String args) /Cmethod c1 = new Cmethod(); Cmeth

24、od c2 = new Cmethod(false); class Cmethod Cmethod (boolean b) Cmethod () public static void main (String args) Cmethod c1 = new Cmethod(); Cmethod c2 = new Cmethod(false); 運轉(zhuǎn)時系統(tǒng)自動賦予一個空構(gòu)造方法,僅僅當該類沒定義構(gòu)造方法的情況下籠統(tǒng)類(abstract class)n一個未完成的類n僅僅籠統(tǒng)類可以包含籠統(tǒng)方法(abstract methods)n籠統(tǒng)方法: 僅僅聲明了方法,但未實現(xiàn)n有訪問修飾詞n前往值類型n方法名

25、n參數(shù)列表n無方法體籠統(tǒng)類(abstract class)abstract class Point int x = 1, y = 1;void move(int dx, int dy) x += dx;y += dy;alert();abstract void alert();abstract class ColoredPoint extends Point int color;class SimplePoint extends Point void alert() 籠統(tǒng)方法: 有訪問修飾詞、前往值類型、方法名和參數(shù)列表,無方法體籠統(tǒng)類(abstract class)n籠統(tǒng)類不能被實例化,例P

26、oint p = new Point(); n子類承繼籠統(tǒng)類時,必需重寫籠統(tǒng)方法,否那么仍為籠統(tǒng)類abstract class Point int x = 1, y = 1;void move(int dx, int dy) x += dx;y += dy;alert();abstract void alert();abstract class ColoredPoint extends Point int color;class SimplePoint extends Point void alert() Point p = new SimplePoint();import java.awt.

27、*;import java.applet.Applet;public class Car1 extends Applet public void paint(Graphics g) Car mycar=new Car(); g . d r a w S t r i n g ( 起 始 位 置+mycar.getwz(),10,20); g.drawString(前進100,10,35); mycar.qj(100); g.drawString(后退30,10,50); mycar.ht(30); g . d r a w S t r i n g ( 當 前 位 置+mycar.getwz(),10

28、,65); class Car private int wz; public Car()wz=0; p u b l i c v o i d q j ( i n t wz1)wz+=wz1; public void ht(int wz1)wz-=wz1; public int getwz()return wz; 例:car位置0car位置70car位置100對象n援用對象的變量n格式: 對象名.變量名n援用對象的方法n格式: 對象名.方法名n例1nVector v = new Vector();nv.addElement(“hello world);n例2nint a= 1, 2, 3, 4,

29、5; nint size = a.length;n例3nSystem.out.println();對象的釋放n將對象從內(nèi)存中去除n內(nèi)存的管理(枯燥、容易出錯)n渣滓回收(Garbage Collection)n渣滓搜集器(Garbage Collector)n周期性地釋放不再被援用的對象,自動完成n手動完成,System.gc();npublic static void gc() - Runs the garbage collector. n例 對象用作方法的參數(shù)對象的運用class jex6_10 public static void main(String args) Spot s = n

30、ew Spot(2, 3); System.out.println(“s點的坐標: + +s.getX()+“,+s.getY(); Trans ts = new Trans(); ts.move(s, 4, 5); System.out.println(“s點的坐標: + +s.getX()+“,+s.getY();class Spot private int x, y;Spot (int u, int v) setX(u); setY(v);void setX(int x1) x=x1;void setY(int y1) y=y1;int getX() return x;int getY(

31、) return y;class Trans void move(Spot p, int h, int k) p.setX(p.getX() + h);p.setY(p.getY() + k);class jex6_10 public static void main(String args) Spot s = new Spot(2, 3); System.out.println(“s點的坐標: + s.getX()+“,+s.getY(); Trans.move(s, 4, 5); System.out.println(“s點的坐標: + s.getX()+“,+s.getY();class

32、 Spot private int x, y;Spot (int u, int v) setX(u); setY(v);void setX(int x1) x=x1;void setY(int y1) y=y1;int getX() return x;int getY() return y;class Trans static void move(Spot p, int h, int k)p.setX(p.getX() + h);p.setY(p.getY() + k);class jex6_10 public static void main(String args) Spot s = ne

33、w Spot(2, 3); System.out.println(“s點的坐標: + s.getX()+“,+s.getY(); s.move(4, 5); System.out.println(“s點的坐標: + s.getX()+“,+s.getY();class Spot private int x, y;Spot (int u, int v) setX(u); setY(v);void setX(int x1) x=x1;void setY(int y1) y=y1;int getX() return x;int getY() return y;void move(int h, int

34、 k)x = x + h;y = y + k;第三章 面向?qū)ο筇卣鱪根本概念n類的定義n對象n類的承繼和多態(tài)n接口和包n常用工具類類的承繼n父類與子類的關(guān)系 (extends)n根本內(nèi)容n子類可調(diào)用父類的方法和變量,子類可添加父類中沒有的方法和變量n子類可重新定義父類的靜態(tài)/實例變量n子類可重新定義父類的靜態(tài)/實例方法n承繼中的構(gòu)造方法n類成員訪問修飾符與承繼的關(guān)系類的承繼n子類可調(diào)用父類的方法和變量n子類可添加父類中沒有的方法和變量class Vehicle String brand;void setB(String s) brand = s; void showB() System.out

35、.println(brand); class Bus extends Vehicle int gas;void setG(int g) gas = g; void showG() System.out.println(gas); Bus b = new Bus();b.setB(“audi); /*b.setG(100);b.showB(); /*b.showG();子類承繼父類的方法和變量,那么這些方法和變量就屬于子類,那么子類對象對這些方法和變量的調(diào)用是顯而易見的 承繼性是軟件復用的一種方式。承繼性是軟件復用的一種方式。目的:是為了在創(chuàng)建新類時,可以保管現(xiàn)有類的目的:是為了在創(chuàng)建新類時,可

36、以保管現(xiàn)有類的屬性和方法,并能新增,這樣就可以充分利用屬性和方法,并能新增,這樣就可以充分利用現(xiàn)有資源,減少現(xiàn)有資源,減少javajava程序中的反復代碼。程序中的反復代碼。一、類的承繼性承繼性是面向?qū)ο蟪绦蛟O計言語的最主要承繼性是面向?qū)ο蟪绦蛟O計言語的最主要的特點,是其他言語如面向過程言語的特點,是其他言語如面向過程言語所沒有的。所沒有的。 與現(xiàn)實世界的遺傳關(guān)系類似與現(xiàn)實世界的遺傳關(guān)系類似父類和子類孩子孩子父親父親承繼承繼 父類的屬性和方法父類的屬性和方法新類新類現(xiàn)有類現(xiàn)有類承繼承繼承繼的內(nèi)容:承繼的內(nèi)容: 父親的外貌和性格等父親的外貌和性格等n承繼中的super對象類的承繼父類子類實例化一

37、個子類對象thissuper調(diào)用父類的變量和方法調(diào)用子類的變量和方法1 1、實現(xiàn)承繼的方法、實現(xiàn)承繼的方法Java類的承繼關(guān)系圖:類的承繼關(guān)系圖:實現(xiàn)承繼的方法:實現(xiàn)承繼的方法:class extends 例:例:1.import java.applet.Applet; public class cari1 extends Applet 2.class B extends A 3.public class car extends object objectB類類A類類C類類B1類類B2類類B11類類可以省略可以省略舉例:新類舉例:新類B變量:變量:i , j , k方法:顯示方法:顯示i, j

38、 ;顯示;顯示k ; 顯示顯示i+j+k class B extends Aint k;void showk()System.out.println(k:+k);void sum()System.out.println(i+j+k:+(i+j+k);public class M1public static void main(String args)A father =new A();B son=new B();father.i=10;father.j=20;father.showij();son.i=7;son.j=8;son.k=9;son.showij();son.showk();son

39、.sum();i and j:10 20i and j:7 8k:9i+j+k:24private int i; int j;變量:變量:i, j方法:顯示方法:顯示i, j現(xiàn)有類現(xiàn)有類Aclass Aint i,j;void showij()System.out.println(i and j:+i+ +j);2 2、成員變量的隱藏、成員變量的隱藏隱藏:是指在子類中重新定義的父類的同名變量隱藏:是指在子類中重新定義的父類的同名變量class Aint i,j;void showij()System.out.println(i and j:+i+ +j);class B extends Ain

40、t k;void showk()System.out.println(k:+k);void sum()System.out.println(i+j+k:+(i+j+k);public class M1public static void main(String args)A father =new A();B son=new B();father.i=10;father.j=20;father.showij();son.i=7;son.j=8;son.k=9;son.showij();son.showk();son.sum();int i,j;i and j:10 20i and j:0 0k

41、:9i+j+k:24i and j:10 20i and j:7 8k:9i+j+k:243 3、成員方法的覆蓋、成員方法的覆蓋覆蓋:是指在子類中重新定義的父類的同名方法覆蓋:是指在子類中重新定義的父類的同名方法class Aint i,j;void showij()System.out.println(i and j:+i+ +j);class B extends Aint k;void showk()System.out.println(k:+k);void sum()System.out.println(i+j+k:+(i+j+k);public class M1public stati

42、c void main(String args)A father =new A();B son=new B();father.i=10;father.j=20;father.showij();son.i=7;son.j=8;son.k=9;son.showij();son.showk();son.sum();void showij()System.out.println(“覆蓋了父類的成員方法覆蓋了父類的成員方法);finali and j:10 20覆蓋了父類的成員覆蓋了父類的成員方法方法k:9i+j+k:24i and j:10 20i and j:7 8k:9i+j+k:244 4、su

43、persuper父類父類 和和thisthis子類子類在需求給從父類承繼的成員方法添加功能時,要運用在需求給從父類承繼的成員方法添加功能時,要運用supperclass Aint i,j;void showij()System.out.println(i and j:+i+ +j);class B extends Aint k;void showk()System.out.println(k:+k);void sum()System.out.println(i+j+k:+(i+j+k);public class M1public static void main(String args)A f

44、ather =new A();B son=new B();father.i=10;father.j=20;father.showij();son.i=7;son.j=8;son.k=9;son.showij();son.showk();son.sum();void showij()super.showij();System.out.println(“添加了新的成員方法添加了新的成員方法);i and j:10 20i and j:7 8添加新了的成員方添加新了的成員方法法k:9i+j+k:24i and j:10 20i and j:7 8k:9i+j+k:24在子類隱藏了父類的變量時,要用在

45、子類隱藏了父類的變量時,要用this區(qū)分該同名變量的歸屬區(qū)分該同名變量的歸屬class Aint i,j;void showij()System.out.println(i and j:+i+ +j);class B extends Aint k;void showk()System.out.println(k:+k);void sum()System.out.println(i+j+k:+(i+j+k);public class M1public static void main(String args)A father =new A();B son=new B();father.i=10;

46、father.j=20;father.showij();son.i=7;son.j=8;son.k=9;son.showij();son.showk();son.sum();int i,j;i and j:10 20i and j:0 0k:9i+j+k:24i and j:10 20i and j:7 8k:9i+j+k:24void zh()super.i=this.i; super.j=this.j;son.zh();super()和和this()super()可以用來調(diào)用父類的構(gòu)造方法可以用來調(diào)用父類的構(gòu)造方法this()可以用來調(diào)用子類的構(gòu)造方法可以用來調(diào)用子類的構(gòu)造方法留意:留意:

47、 1、構(gòu)造方法與類同名,因此承繼構(gòu)造方法是沒有意義的;、構(gòu)造方法與類同名,因此承繼構(gòu)造方法是沒有意義的; 2、super()和和this()只能在當前子類中運用只能在當前子類中運用作用是調(diào)用構(gòu)造方法:作用是調(diào)用構(gòu)造方法:類的多態(tài)nclass Intsortnpublic String sort(int a,int b) /定義兩個數(shù)排序的方法n if(ab)return a+ +b;n else return b+ +a;npublic String sort(int a,int b,int c) /定義三個數(shù)排序的方法n int swap;n if(ab)swap=a;a=b;b=swap;

48、n if(ac)swap=a;a=c;c=swap;n if(bc)swap=b;b=c;c=swap;n return a+ +b+ +c;n第三章 面向?qū)ο筇卣鱪根本概念n類的定義n對象n類的承繼和多態(tài)n接口和包n常用工具類n接口是對abstract類的進一步擴展n接口中的方法都是未實現(xiàn)的(類似于籠統(tǒng)方法),目的是在實現(xiàn)接口的類之間建立一種協(xié)議n接口中的變量都是常量n定義n一個類符合某個或一組接口,利用implements接口 (interface) public interface 接口名 成員變量;方法聲明; class 類名 implements 接口1, 接口2 n接口名修飾npu

49、blic: 無任何訪問限制n無修飾: 僅限于本包中n接口變量默許都是“public static final接口 (interface)JavaJava程序中把一些常用的常量和方法無方法體程序中把一些常用的常量和方法無方法體放在一同,提供應包中一切類運用,稱作接口放在一同,提供應包中一切類運用,稱作接口。目的:實現(xiàn)多重承繼目的:實現(xiàn)多重承繼接口(interface)1、系統(tǒng)類接口、系統(tǒng)類接口2、自定義接口、自定義接口public class Max extends Applet implements ActionListenerinterface N1class c1 implements N

50、1import java.awt.*;import java.awt.event.*;import java.applet.Applet;p u b l i c c l a s s M e x t e n d s A p p l e t i m p l e m e n t s MouseListener,MouseMotionListener int x1,y1,x2,y2; p u b l i c v o i d i n i t ( ) a d d M o u s e L i s t e n e r ( t h i s ) ; addMouseMotionListener(this);pub

51、lic void paint(Graphics g)g.drawLine(x1,y1,x2,y2);g.drawString(x1:+x1+ y1:+y1+ x2:+x2+ y2:+y2,50,50); public void mousePressed(MouseEvent e) x1=e.getX();y1=e.getY();public void mouseClicked(MouseEvent e)public void mouseExited(MouseEvent e)public void mouseEntered(MouseEvent e)public void mouseRelea

52、sed(MouseEvent e)p u b l i c v o i d m o u s e D r a g g e d ( M o u s e E v e n t e)x2=e.getX();y2=e.getY();repaint();public void mouseMoved(MouseEvent e) 1 1、系統(tǒng)類接口、系統(tǒng)類接口2 2、自定義接口、自定義接口1創(chuàng)建格式:創(chuàng)建格式:修飾符修飾符 interface N1例6.4_1:interface N1 int year=2006; /year默以為static final常量 int age(); /無方法體,在運用時需參與方法

53、體 void output(); 2接口承繼:接口承繼:單承繼和多承繼單承繼和多承繼static finalabstractpublic class M implements N1 String xm;int sr; M(String a,int b)xm=a;sr=b; public int age()return year-sr; public void output()System.out.println(xm+的年齡為:的年齡為:+this.age(); public static void main(String aa) M a=new M(張弛張弛,1988); a.output(

54、); 例:例:1、接口的單承繼、接口的單承繼例:例:interface Avoid F1(); interface B extends A void F2(); class M1 implements B /援用接口援用接口B void F1() void F2() 例:例:interface Avoid F1(); interface Cvoid F3(); interface B extends A,C void F2(); class M1 implements B /援用接口援用接口B void F1() void F2() void F3() 2、接口的多承繼、接口的多承繼 n為什么

55、需求包?n使Java類更容易發(fā)現(xiàn)和運用n防止命名沖突n進展訪問控制 n層次構(gòu)造,特定的功能nA package is a collection of related classes and interfaces providing access protection and namespace management. nimport包 (package)Java允許把多個類搜集在一同成為一組,稱作包允許把多個類搜集在一同成為一組,稱作包package。目的:組織類的存放位置目的:組織類的存放位置一、包類的容器,由類和接口組成一、包類的容器,由類和接口組成包包文件夾文件夾類類文件文件例:例:比喻

56、:比喻:windows文件存放方式文件存放方式包和文件夾包和文件夾P1P2包包F:cx文檔文檔123.txt運用時:運用時:java.applet.Appletjava.applet.*詳細類詳細類 P1Class1_1 Class1_n interface1Class2_1 Class2_n interface2 包的組成:包的組成:包由類和接口組成:包由類和接口組成:例:例:package p1;class Aclass B implements Cinterface C可選可選1 1、javajava系統(tǒng)包系統(tǒng)包由由java系統(tǒng)提供,又稱系統(tǒng)提供,又稱APIApplication pro

57、gram interface特點:系統(tǒng)包以特點:系統(tǒng)包以“java.開頭,有固定的開頭,有固定的功能,用戶不能修正,只能運用。功能,用戶不能修正,只能運用。JavaJava常用包常用包API包功 能java.applet提供通用Applet的支持,是所有Applet的基類java.awt組建標準GUI,包含了眾多的圖形組件、方法和和事件java.lang 包含java語言的核心類庫實現(xiàn)java網(wǎng)絡功能的類庫java.io標準輸入輸出類java.util提供各種使用工具類2 2、包的援用、包的援用1導入包語句導入包語句與變量運用前一樣,包在運用前也有聲明引入。與變量運用前一樣,包在運用前也有聲明

58、引入。例:例:import java.awt.*; import java.lang;默許,可省默許,可省2 2包的途徑見下頁包的途徑見下頁設置系統(tǒng)環(huán)境變量:設置系統(tǒng)環(huán)境變量:Classpath值:值: ; c:j2sdk1.4.1lib; f:P1用戶當前用戶當前運轉(zhuǎn)目錄運轉(zhuǎn)目錄系統(tǒng)類庫系統(tǒng)類庫API目錄目錄用戶自定用戶自定義目錄義目錄2 2包的途徑包的途徑classpathclasspathP1P2包包F:cxtxt123.txtWindows文件和文件和Java類在運用時的對比:類在運用時的對比:java.applet.Appletjava.applet.*詳細類詳細類3.3.自定義包自

59、定義包1創(chuàng)建自定義包:創(chuàng)建自定義包:package ;留意:該語句寫在程序第一行,每個程序只能有一句,假設沒有留意:該語句寫在程序第一行,每個程序只能有一句,假設沒有包語句那么為默許包包語句那么為默許包2設置包途徑設置包途徑(classpath)程序編譯后,他可以像援用系統(tǒng)類那樣來援用自定義類。程序編譯后,他可以像援用系統(tǒng)類那樣來援用自定義類。3包援用格式:包援用格式:import ;如沒有包援用語句如沒有包援用語句,那么為援用默許包那么為援用默許包 import java.lang;) 例:例: package P1; / 程序包語句程序包語句 import java.awt.*; / 包包

60、引入語句引入語句 public class Class1 implements A / 類類定義定義 class Class2 / 類定類定義義 interface A / 接接口的定義口的定義 package P2; import P1.*;class Class3 保管為保管為Class1.java保管為保管為Class3.java保管途徑為保管途徑為f:cx程序調(diào)試過程:程序調(diào)試過程:1、保管:、保管: f:cxClass1.java2、編譯:、編譯:javac d Class1.java編譯結(jié)果:編譯結(jié)果: f:cxP1 Class1.class Class2.class A.clas

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論