面向?qū)ο筇卣鱣_第1頁(yè)
面向?qū)ο筇卣鱣_第2頁(yè)
面向?qū)ο筇卣鱣_第3頁(yè)
面向?qū)ο筇卣鱣_第4頁(yè)
面向?qū)ο筇卣鱣_第5頁(yè)
已閱讀5頁(yè),還剩121頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Java語(yǔ)言程序設(shè)計(jì)1第三章 面向?qū)ο筇卣魇谡n內(nèi)容:基本概念類的定義對(duì)象類的繼承和多態(tài)接口和包常用工具類2基本概念什么是編程語(yǔ)言?人和計(jì)算機(jī)進(jìn)行交流的工具和手段編程語(yǔ)言的發(fā)展機(jī)器語(yǔ)言: 0101001匯編語(yǔ)言: mov第三代語(yǔ)言: 高級(jí)語(yǔ)言,以C語(yǔ)言為代表,過(guò)程式編程語(yǔ)言第四代語(yǔ)言: 非過(guò)程化/面向?qū)ο蟮木幊陶Z(yǔ)言3面向?qū)ο竺嫦驅(qū)ο缶幊?Object Oriented Programming-OOP)面向?qū)ο笫且环N軟件開(kāi)發(fā)的方法,“面向?qū)ο蟮姆治雠c設(shè)計(jì)” 第一個(gè)面向?qū)ο蟮恼Z(yǔ)言: Simula-67第一個(gè)成功的面向?qū)ο缶幊陶Z(yǔ)言: SmalltalkC+, JAVA, C#, PERL等用客觀世界中

2、描述事物的方法來(lái)描述程序中要解決的問(wèn)題萬(wàn)事萬(wàn)物都是對(duì)象程序便是成堆的對(duì)象,彼此通過(guò)消息的傳遞,請(qǐng)求其他對(duì)象進(jìn)行工作 基本概念4五個(gè)基本概念對(duì)象類封裝性繼承性多態(tài)性基本概念5對(duì)象 (object)對(duì)象包含兩個(gè)特性狀態(tài): 指對(duì)象本身的信息(內(nèi)部信息/內(nèi)部變量)行為: 實(shí)現(xiàn)對(duì)信息的訪問(wèn)/對(duì)象的操作標(biāo)志: 代表對(duì)象的標(biāo)識(shí)符山地車的狀態(tài)(兩個(gè)車輪、一些齒輪、速度、擋數(shù)),行為(剎車、加速、減速和換擋)書(shū)包含很多信息,擁有訪問(wèn)所包含信息的方法,一頁(yè)一頁(yè)的看,通過(guò)目錄找到感興趣的內(nèi)容基本概念6對(duì)象 (object)狀態(tài)變量(variables)行為方法(method)對(duì)象就是變量和相關(guān)方法的軟件集合一個(gè)對(duì)象

3、可以由其他對(duì)象組合而成,窗口(按鈕,菜單條,文本框,狀態(tài)欄等)程序就是對(duì)象的集合,對(duì)象之間相互交互和通信完成任務(wù)搭積木基本概念7類 (class)現(xiàn)實(shí)世界中,存在很多同類的對(duì)象,很多桌子、書(shū)、自行車一種原型,一種抽象,一種共性,一個(gè)模板實(shí)例,某類對(duì)象的一個(gè)特定實(shí)體,類是對(duì)象的一個(gè)抽象基本概念8封裝性模塊化-每個(gè)對(duì)象的源文件可以是相互獨(dú)立的,可以被不同的程序調(diào)用,每個(gè)對(duì)象是一塊積木,可以搭建不同的形狀信息隱藏-通常定義一個(gè)公共接口/方法實(shí)現(xiàn)對(duì)對(duì)象的訪問(wèn),可以調(diào)整對(duì)象的私有信息和方法,而不會(huì)對(duì)其他調(diào)用它的對(duì)象產(chǎn)生影響可重用性基本概念9繼承性運(yùn)輸工具航空運(yùn)輸工具陸地運(yùn)輸工具水上運(yùn)輸工具人力驅(qū)動(dòng)引擎驅(qū)

4、動(dòng)二輪四輪客運(yùn)貨運(yùn)基本概念10繼承性多重繼承類A類B類C類D類F類G一個(gè)類擁有多個(gè)父類產(chǎn)生二義性,例類C和類D都有一個(gè)同名的方法,類G?Java中僅僅支持單一繼承,同時(shí)Java采用Interface(接口)實(shí)現(xiàn)多重繼承而避免父類二義性基本概念11多態(tài)性表現(xiàn)在繼承中方法的重寫(xiě)子類從父類繼承(extends擴(kuò)展)而來(lái)多個(gè)子類同屬一個(gè)父類,所有子類有相同的父類繼承父類的方法在不同的子類中有不同的表現(xiàn)形式表現(xiàn)在用一個(gè)類中方法的重載基本概念12多態(tài)性多態(tài)性在繼承中的表現(xiàn)基本概念13多態(tài)性class Square extends Shape void draw() System.out.println(S

5、quare.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 extends Shape void draw() System.out.println(Circle.draw();

6、 void erase() System.out.println(Circle.erase(); 基本概念14多態(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 static void main(String args) Shape s = new Shape9; for(

7、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類成員的訪問(wèn)class A private int x;private void print() class B void test() A a = new A();a.x = 100;a.print();28protected (保護(hù)變量/保護(hù)方法)容許類本身、子類(有一定

8、限制)以及同一個(gè)包中所有類訪問(wèn)(先構(gòu)造對(duì)象,再訪問(wèn))類成員的訪問(wèn)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 test(A a, B b) a.x = 100;a.print();b.x = 100;b.print();/ille

9、gal/illegal/legal/legal29無(wú)修飾 (友好變量/友好方法)容許類本身以及同一個(gè)包中所有類訪問(wèn)類成員的訪問(wè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.print();30小結(jié)* 指子類與父類不在同一個(gè)包中的情況類成員變量的訪問(wèn)31static (靜態(tài)變量/靜態(tài)方法)類

10、的變量/方法,獨(dú)立于類的對(duì)象,可以直接根據(jù)類名調(diào)用class S static int A = 12, B = 34;static void print() class Test public static void main(String args) System.out.println(“A=“ + S.A + “ B=“ + S.B);S.print();類成員變量32static (靜態(tài)變量/靜態(tài)方法)class Test public void print(int x) System.out.println(x); public static void main(String arg

11、s) 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.out.println(x); public static void main(String args) int x = 3;Test t = new Test();t.print(x);class Test public stat

12、ic void print(int x) System.out.println(x); public static void main(String args) int x = 3;print(x);static方法中僅僅可以調(diào)用其他static方法類成員33final 變量/方法final變量: 定義一個(gè)常數(shù),即變量值不能改變final double AVOGADRO = 6.022e23;final類: 不能有子類final方法: 方法不能被重寫(xiě)(overriding)class ChessAlgorithm . . . final void nextMove(ChessPiece pie

13、ceMoved, BoardLocation newLocation) . . . .類成員變量34非訪問(wèn)控制修符靜態(tài)方法static屬于類的方法最終方法final不能被子類重新定義的方法抽象方法abstract只有方法說(shuō)明,沒(méi)有具體實(shí)現(xiàn)本地方法native以其他語(yǔ)言實(shí)現(xiàn)方法功能同步方法synchronized用于多線程程序中的協(xié)調(diào)和同步類成員方法的訪問(wèn)35例成員方法class Test public static void main(String args) double d_product;Area myArea;myArea = new Area(); d_product = myAdu

14、ct();System.out.println(“myArea的面積是: ” + d_product);class Area double width, height; void setV(double w, double h) width = w;height = h; double product() return width*height;36方法參數(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);Syste

15、m.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.util.Vector;class Test private void addV(Vector v) v.addElement(s3); private void addI(int i1, int i2) i1 +; i2 +; 形參和實(shí)參D:java Parameter3 43

16、423注意1: 類型匹配注意2:基本類型與復(fù)合類型參數(shù)傳遞的結(jié)果不同37例成員方法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;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=

17、10;輸出結(jié)果:3 4 511 12 13 14 1538方法的重載(overload)方法名相同,但方法的參數(shù)不同方法描述 方法名(標(biāo)識(shí)符) 參數(shù)類型 方法返回值 絕對(duì)值 abs(a) int int絕對(duì)值 abs(a) long long絕對(duì)值 abs(a) float float絕對(duì)值 abs(a) double double public static int abs(inta) public static long abs(longa) public static float abs(floata)public static double abs(doublea) 成員方法39方法的

18、重寫(xiě)(overriding)子類重寫(xiě)父類的方法成員方法class Father void display( ) ; class Son extends Father void display() ; Father f = new Father();f.display();Son s = new Son();s.display();40構(gòu)造方法創(chuàng)建對(duì)象/實(shí)例化對(duì)象new 例1: Apple a = new Apple(); (創(chuàng)建對(duì)象)例2: Apple a; (對(duì)象的說(shuō)明) a = new Apple(); (實(shí)例化對(duì)象)對(duì)象的實(shí)例化通過(guò)構(gòu)造方法(constructor)來(lái)實(shí)現(xiàn)構(gòu)造方法的名字與

19、類名相同構(gòu)造方法沒(méi)有返回值構(gòu)造方法可以有多個(gè),構(gòu)成方法的重載(overload)41例: 對(duì)象的實(shí)例化和初始化class jex6_8 public static void main(String args) Qangle q1 = new Qangle(); Qangle q2 = new Qangle(20, 50); Qangle q3 = new Qangle(q1); System.out.println(q1.width() +“ ” +q1.height(); System.out.println(q2.width() +“ ” +q2.height(); System.out.

20、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 = r.height();int width() return a;int height() return h;輸出結(jié)果: 2020 5010 20構(gòu)造方法42方法的重載(overload)構(gòu)造方法class Tree int height; Tree() prt(“Planting a see

21、ding”); 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 info(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

22、= new Tree(i); (); (“my tree”);new Tree();43默認(rèn)構(gòu)造方法例 class Apple int color; Apple a = new Apple();對(duì)象實(shí)例的判斷: null例 Apple a; if (a = null) System.out.println(“Day dream”);構(gòu)造方法運(yùn)行時(shí)系統(tǒng)自動(dòng)賦予一個(gè)空構(gòu)造函數(shù)如 Apple() 44構(gòu)造方法構(gòu)造方法 class Cmethod Cmethod (boolean b) public static void main (String args) Cmethod c1 = new Cme

23、thod(); Cmethod c2 = new Cmethod(false); 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) Cmethod () public static void main (String args) Cmethod c1 = new Cmethod(); Cmethod c2 = n

24、ew Cmethod(false); 運(yùn)行時(shí)系統(tǒng)自動(dòng)賦予一個(gè)空構(gòu)造方法,僅僅當(dāng)該類沒(méi)定義構(gòu)造方法的情況下45抽象類(abstract class)一個(gè)未完成的類僅僅抽象類可以包含抽象方法(abstract methods)抽象方法: 僅僅申明了方法,但未實(shí)現(xiàn)有訪問(wèn)修飾詞返回值類型方法名參數(shù)列表無(wú)方法體46抽象類(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 Col

25、oredPoint extends Point int color;class SimplePoint extends Point void alert() 抽象方法: 有訪問(wèn)修飾詞、返回值類型、方法名和參數(shù)列表,無(wú)方法體47抽象類(abstract class)抽象類不能被實(shí)例化,例Point p = new Point(); 子類繼承抽象類時(shí),必須重寫(xiě)抽象方法,否則仍為抽象類abstract class Point int x = 1, y = 1;void move(int dx, int dy) x += dx;y += dy;alert();abstract void alert()

26、;abstract class ColoredPoint extends Point int color;class SimplePoint extends Point void alert() Point p = new SimplePoint();48import java.awt.*;import java.applet.Applet;public class Car1 extends Applet public void paint(Graphics g) Car mycar=new Car(); g.drawString(起始位置+mycar.getwz(),10,20); g.dr

27、awString(前進(jìn)100,10,35); mycar.qj(100); g.drawString(后退30,10,50); mycar.ht(30); g.drawString(當(dāng)前位置+mycar.getwz(),10,65); class Car private int wz; public Car()wz=0; public void qj(int wz1)wz+=wz1; public void ht(int wz1)wz-=wz1; public int getwz()return wz; 例:car位置0car位置70car位置10049對(duì)象引用對(duì)象的變量格式: 對(duì)象名.變量名

28、引用對(duì)象的方法格式: 對(duì)象名.方法名例1Vector v = new Vector();v.addElement(“hello world”);例2int a= 1, 2, 3, 4, 5; int size = a.length;例3System.out.println();50對(duì)象的釋放將對(duì)象從內(nèi)存中清除內(nèi)存的管理(枯燥、容易出錯(cuò))垃圾回收(Garbage Collection)垃圾搜集器(Garbage Collector)周期性地釋放不再被引用的對(duì)象,自動(dòng)完成手動(dòng)完成,System.gc();public static void gc() - Runs the garbage coll

29、ector. 51例 對(duì)象用作方法的參數(shù)對(duì)象的使用class jex6_10 public static void main(String args) Spot s = new Spot(2, 3); System.out.println(“s點(diǎn)的坐標(biāo):” + +s.getX()+“,”+s.getY(); Trans ts = new Trans(); ts.move(s, 4, 5); System.out.println(“s點(diǎn)的坐標(biāo):” + +s.getX()+“,”+s.getY();class Spot private int x, y;Spot (int u, int v) se

30、tX(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 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點(diǎn)的坐標(biāo):” + s.getX(

31、)+“,”+s.getY(); Trans.move(s, 4, 5); System.out.println(“s點(diǎn)的坐標(biāo):” + 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;class Trans static void move(Spot p, int h, int k)p.setX(p.g

32、etX() + 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點(diǎn)的坐標(biāo):” + s.getX()+“,”+s.getY(); s.move(4, 5); System.out.println(“s點(diǎn)的坐標(biāo):” + s.getX()+“,”+s.getY();class Spot private int x, y;Spot (int u, int v) setX(u); setY(v);void set

33、X(int x1) x=x1;void setY(int y1) y=y1;int getX() return x;int getY() return y;void move(int h, int k)x = x + h;y = y + k;52第三章 面向?qū)ο筇卣骰靖拍铑惖亩x對(duì)象類的繼承和多態(tài)接口和包常用工具類53類的繼承父類與子類的關(guān)系 (extends)基本內(nèi)容子類可調(diào)用父類的方法和變量,子類可增加父類中沒(méi)有的方法和變量子類可重新定義父類的靜態(tài)/實(shí)例變量子類可重新定義父類的靜態(tài)/實(shí)例方法繼承中的構(gòu)造方法類成員訪問(wèn)修飾符與繼承的關(guān)系54類的繼承子類可調(diào)用父類的方法和變量子類可增加父類中

34、沒(méi)有的方法和變量class Vehicle String brand;void setB(String s) brand = s; void showB() System.out.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();子類繼承父類的方法和變量,則這些方法和變量就屬于子

35、類,則子類對(duì)象對(duì)這些方法和變量的調(diào)用是顯而易見(jiàn)的55 繼承性是軟件復(fù)用的一種形式。目的:是為了在創(chuàng)建新類時(shí),可以保留現(xiàn)有類的屬性和方法,并能新增,這樣就可以充分利用現(xiàn)有資源,減少java程序中的重復(fù)代碼。一、類的繼承性繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的最主要的特點(diǎn),是其他語(yǔ)言(如面向過(guò)程語(yǔ)言)所沒(méi)有的。 56 與現(xiàn)實(shí)世界的遺傳關(guān)系類似父類和子類孩子父親繼承 父類的屬性和方法新類現(xiàn)有類繼承繼承的內(nèi)容: 父親的外貌和性格等57繼承中的super對(duì)象類的繼承父類子類實(shí)例化一個(gè)子類對(duì)象thissuper調(diào)用父類的變量和方法調(diào)用子類的變量和方法581、實(shí)現(xiàn)繼承的方法Java類的繼承關(guān)系圖:實(shí)現(xiàn)繼承的方法:c

36、lass 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類可以省略59舉例:新類B變量:i , j , k方法:顯示i, j ;顯示k ; 顯示(i+j+k) class B extends Aint k;void showk()System.out.println(k:+k);void sum()System.out.println(i+j+k:

37、+(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();i and j:10 20i and j:7 8k:9i+j+k:24private int i; int j;變量:i, j方法:顯示i, j現(xiàn)有類Aclass Aint i,j;void showij()Syste

38、m.out.println(i and j:+i+ +j);602、成員變量的隱藏隱藏:是指在子類中重新定義的父類的同名變量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

39、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:9i+j+k:24i and j:10 20i and j:7 8k:9i+j+k:24613、成員方法的覆蓋覆蓋:是指在子類中重新定義的父類的同名方法class Aint i,j;void showij()System.out.println(i and j:+i+ +j);class B extends

40、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.sum();void showij()System.out.printl

41、n(“覆蓋了父類的成員方法”);finali and j:10 20覆蓋了父類的成員方法k:9i+j+k:24i and j:10 20i and j:7 8k:9i+j+k:24624、super(父類 )和this(子類)在需要給從父類繼承的成員方法添加功能時(shí),要使用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:

42、+(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();void showij()super.showij();System.out.println(“添加了新的成員方法”);i and j:10 20i and j:7 8添加新了的成員方法k:9i+j+k:24i and

43、 j:10 20i and j:7 8k:9i+j+k:2463在子類隱藏了父類的變量時(shí),要用this區(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 s

44、on=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: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();64super()和this()super()可以用來(lái)調(diào)用父類的構(gòu)造方法this()可以用來(lái)調(diào)用子類的構(gòu)造方法注意: 1、構(gòu)造

45、方法與類同名,因此繼承構(gòu)造方法是沒(méi)有意義的; 2、super()和this()只能在當(dāng)前子類中使用作用是調(diào)用構(gòu)造方法:65類的多態(tài)class Intsortpublic String sort(int a,int b) /定義兩個(gè)數(shù)排序的方法 if(ab)return a+” ”+b; else return b+” ”+a;public String sort(int a,int b,int c)/定義三個(gè)數(shù)排序的方法 int swap; if(ab)s; if(ac)s; if(bc)s; return a+” ”+b+” ”+c;66第三章 面向?qū)ο筇卣骰靖拍铑惖亩x對(duì)象類的繼承和多態(tài)

46、接口和包常用工具類67接口是對(duì)abstract類的進(jìn)一步擴(kuò)展接口中的方法都是未實(shí)現(xiàn)的(類似于抽象方法),目的是在實(shí)現(xiàn)接口的類之間建立一種協(xié)議接口中的變量都是常量定義一個(gè)類符合某個(gè)或一組接口,利用implements接口 (interface) public interface 接口名 成員變量;方法聲明; class 類名 implements 接口1, 接口2 68接口名修飾public: 無(wú)任何訪問(wèn)限制無(wú)修飾: 僅限于本包中接口變量默認(rèn)都是“public static final”接口 (interface)69Java程序中把一些常用的常量和方法(無(wú)方法體)放在一起,提供給包中所有類使用

47、,稱作接口。目的:實(shí)現(xiàn)多重繼承接口(interface)1、系統(tǒng)類接口2、自定義接口public class Max extends Applet implements ActionListenerinterface N1class c1 implements N170import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class M extends Applet implements MouseListener,MouseMotionListener int x1,y1,x2,y2; publi

48、c void init()addMouseListener(this); addMouseMotionListener(this);public 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(Mous

49、eEvent e)public void mouseEntered(MouseEvent e)public void mouseReleased(MouseEvent e)public void mouseDragged(MouseEvent e)x2=e.getX();y2=e.getY();repaint();public void mouseMoved(MouseEvent e) 1、系統(tǒng)類接口712、自定義接口(1)創(chuàng)建格式:修飾符 interface N1例6.4_1:interface N1 int year=2006; /year默認(rèn)為static final常量 int age

50、(); /無(wú)方法體,在使用時(shí)需加入方法體 void output(); (2)接口繼承:?jiǎn)卫^承和多繼承static finalabstract72public 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.out

51、put(); 例:731、接口的單繼承例:interface Avoid F1(); interface B extends A void F2(); class M1 implements B /引用接口B void F1() void F2() 74例: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、接口的多繼承 75為什么需要包?使Java類更容易發(fā)現(xiàn)和使用防

52、止命名沖突進(jìn)行訪問(wèn)控制 層次結(jié)構(gòu),特定的功能A package is a collection of related classes and interfaces providing access protection and namespace management. import包 (package)76Java允許把多個(gè)類收集在一起成為一組,稱作包(package)。目的:組織類的存放位置一、包(類的容器,由類和接口組成)包文件夾類文件例:比喻:windows文件存放方式77包和文件夾P1P2包F:cx文檔123.txt使用時(shí):java.applet.Appletjava.applet.

53、*具體類78 P1Class1_1 Class1_n interface1Class2_1 Class2_n interface2 包的組成:包由類和接口組成:例:package p1;class Aclass B implements Cinterface C可選791、java系統(tǒng)包由java系統(tǒng)提供,又稱API(Application program interface)特點(diǎn):系統(tǒng)包以“java.”開(kāi)頭,有固定的功能,用戶不能修改,只能使用。80Java常用包API包功 能java.applet提供通用Applet的支持,是所有Applet的基類java.awt組建標(biāo)準(zhǔn)GUI,包含了眾多

54、的圖形組件、方法和和事件java.lang包含java語(yǔ)言的核心類庫(kù)實(shí)現(xiàn)java網(wǎng)絡(luò)功能的類庫(kù)java.io標(biāo)準(zhǔn)輸入輸出類java.util提供各種使用工具類81822、包的引用(1)導(dǎo)入包語(yǔ)句與變量使用前一樣,包在使用前也有聲明(引入)。例:import java.awt.*; import java.lang;(默認(rèn),可?。?)包的路徑(見(jiàn)下頁(yè))設(shè)置系統(tǒng)環(huán)境變量:Classpath值: ; c:j2sdk1.4.1lib; f:P1用戶當(dāng)前運(yùn)行目錄系統(tǒng)類庫(kù)API目錄用戶自定義目錄83(2)包的路徑(classpath)P1P2包F:cxtxt123.txtWindows文件和Java類在

55、使用時(shí)的對(duì)比:java.applet.Appletjava.applet.*具體類843.自定義包(1)創(chuàng)建自定義包:package ;注意:該語(yǔ)句寫(xiě)在程序第一行,每個(gè)程序只能有一句,若沒(méi)有包語(yǔ)句則為默認(rèn)包(2)設(shè)置包路徑(classpath)程序編譯后,你可以像引用系統(tǒng)類那樣來(lái)引用自定義類。(3)包引用格式:import ;如沒(méi)有包引用語(yǔ)句,則為引用默認(rèn)包 (import java.lang;)85 例: package P1; / 程序包語(yǔ)句 import java.awt.*; / 包引入語(yǔ)句 public class Class1 implements A / 類定義 class Cl

56、ass2 / 類定義 interface A / 接口的定義 package P2; import P1.*;class Class3 保存為Class1.java保存為Class3.java保存路徑為f:cx86程序調(diào)試過(guò)程:1、保存: f:cxClass1.java2、編譯:javac d Class1.java編譯結(jié)果: f:cxP1 Class1.class Class2.class A.class3、運(yùn)行:java P1.Class1f:cx87第三章 面向?qū)ο筇卣骰靖拍铑惖亩x對(duì)象類的繼承和多態(tài)接口和包常用工具類88常用工具類 Java 2 Platform PackagesJa

57、vaTM 2 Platform, Standard Edition, v 1.4.1 API SpecificationJava語(yǔ)言基礎(chǔ)類、Java類庫(kù)定義描述見(jiàn)Java2SDK文檔135個(gè)包(package)java.applet; java.awt; java.awt.eventjava.io; java.lang; java.sql; java.text; java.utiljavax.swing 2723個(gè)類(class)和接口(interface)實(shí)現(xiàn)d:j2sdk1.4.1_01jrelibrt.jar(22.4MB)jar tvf rt.jar | more89常用工具類 jav

58、a.lang包Object類System類Math類基本數(shù)據(jù)類型的包裝類字符串操作類String類StringBuffer類StringTokenizer類(java.util包)Runtime類90java.lang.Object類 Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. 子類可以對(duì)Object類的方法進(jìn)行重寫(xiě)構(gòu)造方法 -

59、 public Object()實(shí)例方法protected Object clone() throws CloneNotSupportedExceptionpublic boolean equals(Object obj)protected void finalize() throws Throwablepublic final Class getClass()public int hashCode()public final void notify()public final void notifyAll()public String toString()public final void

60、wait() throws InterruptedExceptionpublic final void wait(long timeout) throws InterruptedExceptionpublic final void wait(long timeout, int nanos) throws InterruptedException91java.lang.System類靜態(tài)變量public static final InputStream in (標(biāo)準(zhǔn)輸入流)public static final PrintStream out (標(biāo)準(zhǔn)輸出流)public static final

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論