《JAVA語言 第四章 面向?qū)ο蟮母拍詈?Java 實現(xiàn)-2》由會員分享,可在線閱讀,更多相關(guān)《JAVA語言 第四章 面向?qū)ο蟮母拍詈?Java 實現(xiàn)-2(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、ACCP V4.0第四章第四章面向?qū)ο蟮母拍詈?Java 實現(xiàn)-2ACCP V4.0回顧q類是具有相同屬性和行為的一組對象的集合,對象是類的實例q封裝是隱藏對象實現(xiàn)細節(jié)的過程,以便不讓用戶看到實現(xiàn)的細節(jié)q類可用Class來定義,類的變量和方法可被該類的實例訪問,圓點符號用于訪問對象的成員,構(gòu)造函數(shù)在創(chuàng)建對象時初始化對象q包可用package來申明,可用import 來導(dǎo)入包2ACCP V4.0目標(biāo)q理解繼承及其特點q運用JAVA程序?qū)崿F(xiàn)繼承q理解多態(tài)及其特點設(shè)計q運用JAVA程序?qū)崿F(xiàn)多態(tài)q掌握訪問修飾符和方法修飾符3ACCP V4.0繼承父父 類類 子類子類 父類父類/子類是子類是相對的相對的
2、Cow類Lion類Tiger類類Animals類Carnivorous類Herbivorous類Coat類4ACCP V4.0繼承的特點繼承的特點繼承的特點具有層次結(jié)構(gòu)子類繼承了父類的屬性和方法5ACCP V4.0繼承的優(yōu)點繼承的優(yōu)點繼承的優(yōu)點代碼的可重用性父類的屬性和方法可用于子類設(shè)計應(yīng)用程序變得更加簡單可以輕松地自定義子類6ACCP V4.0繼承的JAVA實現(xiàn) 演示:示例 1q編寫一個父類q使用 extends 關(guān)鍵字,編寫子類class Car extends Vehicles /*構(gòu)造方法.*/Car()/*顯示子類 Car 的信息.*/void show()System.out.pr
3、intln(“從子類 Car 中輸出的信息);System.out.println(“交通工具的名稱-+name);System.out.println(“交通工具的顏色-+color);System.out.println(“座位的數(shù)量-+seats);System.out.println(=);class Vehicles /*存儲交通工具的名稱.*/protected String name=Honda Civic;/*存儲顏色信息.*/protected String color=Red;/*存儲座位信息.*/protected int seats=5;/*構(gòu)造方法.*/Vehicle
4、s()/*顯示父類汽車的詳細信息 */void showDetail()System.out.println(從父類 Vehicles 中輸出的信息);System.out.println(名稱-+name);System.out.println(顏色-+color);public class CarTest/*構(gòu)造方法*/CarTest()/*這是 main 方法 *param args 傳遞至 main 方法的參數(shù) */public static void main(String args)/*聲明一個對象*/Car vehicle=new Car();vehicle.show();veh
5、icle.showDetail();7ACCP V4.0子類構(gòu)造方法 2-1子類構(gòu)造方法的名稱與類的名稱相同先調(diào)用父類構(gòu)造方法,再調(diào)用子類構(gòu)造方法要調(diào)用父類構(gòu)造方法,使用關(guān)鍵字 super8ACCP V4.0子類構(gòu)造方法 2-2q調(diào)用父類構(gòu)造方法的語法為:super()或 super(參數(shù)列表);qsuper()方法始終指向調(diào)用類的父類9ACCP V4.0調(diào)用父類構(gòu)造方法演示:示例 3q關(guān)鍵字 super 的用法class FictionAuthor extends Author /*存儲作者的小說類型.*/String storytype;/*子類構(gòu)造方法.param name 傳遞至構(gòu)造方
6、法的參數(shù) param type 傳遞至構(gòu)造方法的參數(shù)*/FictionAuthor(String name,String type)super(name);storytype=type;System.out.println(“從 Fiction Author 類輸出);System.out.println(“小說類型為+storytype);調(diào)用父類構(gòu)造方法Author(String str)name=str;System.out.println(“從 Author 類輸出);System.out.println(“姓名為 +name);10ACCP V4.0多態(tài)性 2-1q多態(tài)性是指“多種形
7、式”q它使用不同的實例而執(zhí)行不同操作q多態(tài)包括方法重寫和方法重載11ACCP V4.0多態(tài)性 2-2父類子類-繪制和移動三角形子類-繪制和移動矩形 子類-繪制和移動五邊形ShapeShapeDraw()Move()TriangleDraw()DrawTraingleMove()MoveTriangleVerticesRectangleDraw()DrawRectangleMove()MoveRectangleCornerPentagonDraw()DrawPentagonMove()MovePentagonVertices12ACCP V4.0方法重載 2-1方法重載方法重載類中有多個具有相同
8、名稱的方法方法重載方法重載方法重載方法重載類中有多個具有相同名稱的方法方法具有不同的參數(shù)列表13ACCP V4.0方法重載 2-2演示:示例 4public class DisplayNumber /*無參數(shù)可顯示/void display()System.out.println(無參數(shù)可顯示!);/*param num 傳遞至 display 方法的參數(shù) *param num1 傳遞至 display 方法的參數(shù) */void display(int num,int num1)System.out.println(兩個整數(shù)是:+num+num1);/*param型的 count 由 disp
9、lay 方法接收*/void display(double count)System.out.println(在 display(double)方法內(nèi):+count)public static void main(String arg)int count=25;DisplayNumber dispObj=new DisplayNumber();dispObj.display();dispObj.display(10,20);/*不存在具有一個 int 型參數(shù)的方法,*int 型值自動轉(zhuǎn)化為 double 型值 */System.out.println(“調(diào)用 display(double)方法
10、,+“使用 int 變量:+count);dispObj.display(count);dispObj.display(25.5);14ACCP V4.0方法重寫 2-1方法重寫方法重寫方法重寫方法重寫子類和父類的方法具有相同的名稱和類型用子類對象調(diào)用子類中的重寫方法super.methodname()用于調(diào)用父類中的方法15ACCP V4.0方法重寫 2-2q父類和子類中具有相同名稱和類型的方法 public static void main(String arg)Rectangle rectObj=new Rectangle(10,15);rectObj.getPerimeter();Re
11、ctangle sqObj=new Square(15);sqObj.getPerimeter();調(diào)用父類方法調(diào)用子類方法class Square extends Rectangle Square(int len)length=len;/*計算周長.*/void getPerimeter()System.out.println(“正方形的周長為+(4*length);class Rectangle int length;int width;Rectangle(int len,int wid)length=len;width=wid;/*計算矩形的周長.*/void getPerimeter(
12、)System.out.println(“矩形的周長為 +(2*(length+width);16ACCP V4.0訪問修飾符 3-1q信息隱藏是 OOP 最重要的功能之一,也是使用訪問修飾符的原因q信息隱藏的原因包括:q對任何實現(xiàn)細節(jié)所作的更改不會影響使用該類的代碼q防止用戶意外刪除數(shù)據(jù)q此類易于使用 訪問修飾符訪問修飾符訪問修飾符訪問修飾符訪問修飾符訪問修飾符privateprotectedpublic默認17ACCP V4.0訪問修飾符 3-2該類或非該類均該類或非該類均可訪問可訪問public只有該類可以訪只有該類可以訪問問private相同數(shù)據(jù)包中的相同數(shù)據(jù)包中的類可以訪問類可以訪問
13、默認默認該類及其子類的該類及其子類的成員可以訪問,成員可以訪問,同一個包中的類同一個包中的類也可訪問也可訪問protected18ACCP V4.0訪問修飾符 3-3q訪問修飾符可訪問性位置private默認protectedpublic同一個類是是是是同一個包內(nèi)的類否是是是不同包內(nèi)的子類否否是是不同包并且不是子類否否否是19ACCP V4.0方法修飾符方法修飾符方法修飾符方法修飾符方法修飾符staticfinalabstract20ACCP V4.0static 修飾符 3-1qstatic修飾符修飾的方法叫靜態(tài)方法q目的q使該方法獨立于類的實例,使用類去訪問,而不是類實例,所以也叫類方法2
14、1ACCP V4.0static 修飾符 3-2q調(diào)用靜態(tài)方法的語法為:classname.methodname();規(guī)規(guī)規(guī)規(guī) 則則則則可以調(diào)用其他靜態(tài)方法必須訪問靜態(tài)數(shù)據(jù)不能使用 super 或 this 關(guān)鍵字22ACCP V4.0演示:示例 6 public static void main(String arg)/*初始化變量*/double inch=66;double feet=InchesToFeet.convert(inches);System.out.println(inch+“英寸為”+feet+“英尺。);q使用類名稱調(diào)用 static 方法public static d
15、ouble convert(double in)return(in/inches);static 修飾符 3-323ACCP V4.0final 修飾符 finalfinal不能修改變量不能修改變量子類不能重寫方法子類不能重寫方法24ACCP V4.0abstract 修飾符 3-1q由abstract修飾的方法叫抽象方法;由abstract修飾的類叫抽象類q抽象方法必須聲明在抽象類中q抽象方法語法:abstract type method_name(parameter_list);q聲明抽象類語法:abstract class q使用:父類中的某些抽象不包含任何邏輯,并需要在子類中重寫,子類
16、提供這種抽象方法的實現(xiàn)細節(jié)25ACCP V4.0abstract 修飾符 3-2q抽象類可以具有指向子類對象的對象引用 abstractabstract抽象類不能被實例化構(gòu)造方法 和 static 方法不能是抽象的父類的抽象方法往往在子類中實現(xiàn) 26ACCP V4.0abstract 修飾符 3-3 演示:示例 7q抽象方法不具有任何實現(xiàn)代碼abstract class Shape.protected double length;protected double width;.abstract double area();class Square extends Shape /*構(gòu)造方法.*p
17、aram num 傳遞至構(gòu)造方法的參數(shù) *param num1 傳遞至構(gòu)造方法的參數(shù) */Square(final double num,final double num1)super(num,num1);/*計算正方形的面積.*return double */double area()System.out.println(“正方形的面積為:);return length*width;27ACCP V4.0接口q接口就是某個事物對外提供的一些功能的申明 q可以利用接口實現(xiàn)多態(tài),同時接口也彌補了Java單一繼承的弱點q使用interface關(guān)鍵字定義接口q一般使用接口聲明方法或常量,接口中的方法
18、只能是聲明,不能是具體的實現(xiàn)28ACCP V4.0創(chuàng)建接口的步驟 2-1/定義方法的接口public interface myinterface public void add(int x,int y);public void volume(int x,int y,int z);/定義程序使用的常量的接口public interface myconstants public static final double price=1450.00;public static final int counter=5;定義一個接口:29ACCP V4.0創(chuàng)建接口的步驟 2-2q編譯如下:javac my
19、interface.javaq用關(guān)鍵字 implements 實現(xiàn)接口,例如:class demo implements myinterfaceq如果有一個以上接口被實現(xiàn),則用逗號隔開接口名稱,如下所示:class demo implements Mycalc,Mycount30ACCP V4.0接口使用示例public interface GForce double g=9.8;void show();public class InterfaceTest public static void main(String args)GForce gForce=new Earth();gForce.
20、show();public class Earth implements GForce public void show()System.out.println(“g=“+g);31ACCP V4.0總結(jié) q封裝、繼承和多態(tài)是面向?qū)ο蟮闹饕卣鱭繼承可提高代碼的重用性,使用extends關(guān)鍵字來實現(xiàn)。除了構(gòu)造方法之外,父類的所有方法和屬性都被子類的對象繼承q多態(tài)性是不同的實例對象以不同的方式對相同的信息作出不同的表現(xiàn)q訪問修飾符用于確定訪問類成員的方式qJava 常用修飾符有 static、final、abstractq接口是Java編程一項重要的技術(shù),同過它可以實現(xiàn)多態(tài),同時它也彌補了Java單一繼承的不足32