中国高校课件下载中心 》 教学资源 》 大学文库

《Java程序设计》课程教学课件(PPT讲稿)04 Java面向对象4-面向对象特征(2/3)

文档信息
资源类别:文库
文档格式:PPTX
文档页数:42
文件大小:172.34KB
团购合买:点击进入团购
内容简介
《Java程序设计》课程教学课件(PPT讲稿)04 Java面向对象4-面向对象特征(2/3)
刷新页面文档预览

JavaSunMicrotyterJava的面向对象特征(2)ZUST Software Institute

1 Java的面向对象特征(2) ZUST Software Institute

抽象类(abstractclassJAVA一个未完成的类仅仅抽象类可以包含抽象方法(abstractmethods)抽象方法:仅仅申明了方法,但未实现有访问修饰词返回值类型方法名参数列表无方法体2

2 抽象类(abstract class) ◼ 一个未完成的类 ◼ 仅仅抽象类可以包含抽象方法(abstract methods) ◼ 抽象方法: 仅仅申明了方法,但未实现 ◼ 有访问修饰词 ◼ 返回值类型 ◼ 方法名 ◼ 参数列表 ◼ 无方法体

abstractclass Pointintx=1,y=1;JAVAvoid move(int dx, int dy)x += dx;y += dy;alert();抽象方法:有访问修饰词人返回值类型、方法名和abstract voidalertO);参数列表,无方法体1abstract class ColoredPoint extends Point int color;classSimplePointextendsPointvoid alertO 3

3 抽象类举例 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() { } } 抽象方法: 有访问修饰词、 返回值类型、方法名和 参数列表,无方法体

abstract class ColoredPoint extendsPointint color;JAVA抽象类不能被实例 化, 例Pointp= newPointO;子类继承抽象类时,必须重写抽象方法,否则仍为抽象类class SimplePoint extends PointabstractclassPointvoid alertO int x = 1, y = 1;void move(int dx, int dy)X += dx;Point p = new SimplePointO);y += dy;alert();人abstract void alertO74

4 5.1.2 抽象类特点 ◼ 抽象类不能被实例化,例Point p = new Point(); ◼ 子类继承抽象类时,必须重写抽象方法, 否则仍为抽象类 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();

class Circle extends Graphics abstract class Graphicsdouble r; String C;abstract voidparameterOCircle (double u, String v) <abstractvoidareaO;=u, c=V人多态性(polymorphism)运行结果rameterO应用场合:不同子类可以用1.0 2.0stem.out.println(r + " " + c); )2.0ea() (不同的方式实现同一共同3.0 Redcem.out.println(Math.PI*r*r);接口,该共同接口建立了28.274333class Recta一个基本形式rec=newRectangle(1.0,2.0)double h, w,Circle cir=new Circle(3.0,"Red");Rectangle (double u, double v) Graphics[] g=[rec, cir);h = u; w = v;for(inti=O;i<g.length;i++)1g[i].parameter();g[i].area();void parameterOSystem.out.println(h + " " + w1void area() ( System.out.println(h*w); )75

5 5.1.3 抽象类的多态性 ◼ 多态性 abstract class Graphics { abstract void parameter(); abstract void area(); } class Rectangle extends Graphics { double h, w; Rectangle (double u, double v) { h = u; w = v; } void parameter() { System.out.println(h + “ “ + w); } void area() { System.out.println(h*w); } } Rectangle rec = new Rectangle(1.0, 2.0); Circle cir = new Circle(3.0, “Red”); Graphics[] g = {rec, cir}; for (int i = 0; i < g.length; i++) { g[i].parameter(); g[i].area(); } class Circle extends Graphics { double r; String c; Circle (double u, String v) { r = u; c = v; } void parameter() { System.out.println(r + “ “ + c); } void area() { System.out.println(Math.PI*r*r); } } 运行结果 1.0 2.0 2.0 3.0 Red 28.274333882308138 多态性(polymorphism) 应用场合: 不同子类可以用 不同的方式实现同一共同 接口,该共同接口建立了 一个基本形式

对象JAVA引用对象的变量格式:对象名.变量名引用对象的方法格式:对象名.方法名例1Vector v = new VectorO;v.addElement("hello world");例2int a|l= {1, 2, 3, 4, 5]int size = a.length;例3System.out.printlnO6

6 对象 ◼ 引用对象的变量 ◼ 格式: 对象名.变量名 ◼ 引用对象的方法 ◼ 格式: 对象名.方法名 ◼ 例1 ◼ Vector v = new Vector(); ◼ v.addElement(“hello world”); ◼ 例2 ◼ int a[]= {1, 2, 3, 4, 5}; ◼ int size = a.length; ◼ 例3 ◼ System.out.println();

对象引用对象JAVA通过对象引用对象的成员变量和成员方法class Qangle (int a, h;q1.set(30, 40);Qangle (a = 10; h = 20;) q1.a = 30;Qangle(int x, int y) (a = x; h = y)q1.h = 40;Qangle(Qangler)a = r.widthO;目的相同h = r.height();第一方式更安全、1更面向对象(数据封装void set(int x, inty) ( a=x; h =yi)直接操纵变量7

7 对象引用对象 ◼ 通过对象引用对象的成员变量和成员方法 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(); } void set(int x, int y) { a=x; h =y;} } ▪ q1.set(30, 40); ▪ q1.a = 30; ▪ q1.h = 40; 目的相同 第一方式更安全、 更面向对象(数据封装) 直接操纵变量

TheJava platformallows youtocreateasmanyobjectsasyouwant (limited,of course,bywhatyoursystemcanhandle)andyoudon'thaveto worryabout destroyingthemTheJava runtimeenvironmentdeletesobjectswhen it determines that they are no longer being used.Thisprocessiscalledgarbagecollection垃圾回收(Garbage Collection)垃圾搜集器(Garbage Collector)周期性地释放不再被引用的对象,自动完成手动完成,System.gcO;public static void gcO -- Runs the garbagecollector.8

8 5.2.2 对象的释放 ◼ 将对象从内存中清除 ◼ 内存的管理(枯燥、容易出错) ◼ 垃圾回收(Garbage Collection) ◼ 垃圾搜集器(Garbage Collector) ◼ 周期性地释放不再被引用的对象,自动完成 ◼ 手动完成,System.gc(); ◼ public static void gc() - Runs the garbage collector. The Java platform allows you to create as many objects as you want (limited, of course, by what your system can handle), and you don't have to worry about destroying them. The Java runtime environment deletes objects when it determines that they are no longer being used. This process is called garbage collection

对象的使用JAVA访问对象的私有(private)成员通过定义一个公共方法来实现class Student {private String name;private String id;Student st= newStudent("aloha""001")Student(Strings1, String s2)Stringn=st.getNameO(name=s1;id=s2;})st.setName("csma");n = st.getName();StringgetName)returnname;void setName(String s)(name=s;)1

9 对象的使用 ◼ 访问对象的私有(private)成员 ◼ 通过定义一个公共方法来实现 class Student { private String name; private String id; Student(String s1, String s2) {name = s1; id = s2;} String getName() {return name;} void setName(String s) {name=s;} } Student st = new Student(“aloha”, “001”); String n = st.getName(); . . st.setName(“csma”); n = st.getName(); .

对象作为参数JAVA对象作为方法的参数[访问权限修饰符] 方法返回类型方法名(参数][throws 异常名]方法体;参数:类型变量名,....类型:基本数据类型/复合类型(对象)参数的传递Pass by value10

10 对象作为参数 ◼ 对象作为方法的参数 [访问权限修饰符] 方法返回类型 方法名(参数) [throws 异常名]{ 方法体; } ◼ 参数: 类型 变量名, . . ◼ 类型: 基本数据类型/复合类型(对象) ◼ 参数的传递 ◼ Pass by value

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档