第03章面向对象特征演示教学

上传人:yulij****0329 文档编号:139314616 上传时间:2020-07-21 格式:PPT 页数:157 大小:720.50KB
返回 下载 相关 举报
第03章面向对象特征演示教学_第1页
第1页 / 共157页
第03章面向对象特征演示教学_第2页
第2页 / 共157页
第03章面向对象特征演示教学_第3页
第3页 / 共157页
第03章面向对象特征演示教学_第4页
第4页 / 共157页
第03章面向对象特征演示教学_第5页
第5页 / 共157页
点击查看更多>>
资源描述

《第03章面向对象特征演示教学》由会员分享,可在线阅读,更多相关《第03章面向对象特征演示教学(157页珍藏版)》请在金锄头文库上搜索。

1、1,面向对象程序设计(Java),武汉大学国际软件学院 桂浩,2,第三章 面向对象特征,基本概念 类的定义 对象 类的继承和多态 接口和包 常用工具类,3,基本概念,什么是编程语言? 人和计算机进行交流的工具和手段 编程语言的发展 机器语言: 0101001 汇编语言: mov, push, add, call 第三代语言: 高级语言,以C语言为代表,过程式编程语言(Procedural Programming Language) 第四代语言: 非过程化/面向对象的编程语言 语言的发展: 抽象的过程,4,面向对象(Object Oriented-OO) 面向对象编程(Object Orient

2、ed Programming-OOP) 面向对象是一种软件开发的方法,“面向对象的分析与设计”(OOA 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 d

3、raw() System.out.println(Circle.draw(); void erase() System.out.println(Circle.erase(); ,基本概念,16,多态性,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

4、main(String args) Shape s = new Shape9; for(int i = 0; i s.length; i+) si = randShape(); for(int i = 0; i s.length; i+) si.draw(); ,Circle.draw() Triangle.draw() Circle.draw() Circle.draw() Circle.draw() Square.draw() Triangle.draw() Square.draw() Square.draw(),基本概念,17,第三章 面向对象特征,基本概念 类的定义 对象 类的继承和多

5、态 接口和包 常用工具类,18,程序是对象的集合,而对象是类的实例化 源程序就是一个个的Java类 Java本身提供的类(核心API) 见Java文档中描述 程序员可以对其进行调用 j2sdk1.4.1_01jrelibrt.jar(22.4MB) 程序员自己定义的类,类的定义,19,类的定义格式 类的修饰符class 类名 extends 父类名 implements接口名 类型成员变量1; 类型成员变量2; 类型成员方法1(参数1, 参数2, ) 方法体; 类型成员方法2(参数1, 参数2, ) 方法体; ,类的定义,20,类的定义格式 类的修饰符 class 类名 extends 父类名

6、 implements 接口名 类的修饰符 public: 公共类,可以被其他类所使用,declares that the class can be used by any class regardless of its package (无任何限制) 无修饰/默认说明: a class can be used only by other classes in the same package (仅仅能在同一个包中的其他类引用) abstract: declares that the class cannot be instantiated (宣布该类不能被实例化) final: declar

7、es that the class cannot be subclassed (宣布该类不能有子类),类的描述,21,类的修饰符 final - Declares that the class cannot be subclassed.(宣布该类不能有子类),类的描述,final class ChessAlgorithm . . . ,class BetterChessAlgorithm extends ChessAlgorithm . . . ,Cant subclass final classes: class ChessAlgorithm class BetterChessAlgorit

8、hm extends ChessAlgorithm 1 error,22,类的定义格式 类的修饰符 class 类名 extends 父类名 implements 接口名 extends: 继承的关系 implements: 实现哪些接口(interface)的方法,实现多重继承 public class Test extends Frame implements ActionListener, ItemListener ,类的描述,23,一个简单的类 class Student String name, stuNumber; double score1, score2, score3; vo

9、id set1(String s1, String s2) name = s1;stuNumber = s2; System.out.println(name + “ “ + stuNumber); double setScore(double d1, double d2, double d3) double d; score1 = d1; score2 = d2; score3 = d3; d = d1 d2 + d3; return d; ,类的描述,24,包(Package)的概念 package org.jalpha; class test 源文件位置: “D:srcorgjalpha

10、test.java” 编译方法1: “cd D:srcorgjalpha” “javac test.java” 编译方法2: “cd D:src” “javac orgjalphatest.java” class文件位置: “D:srcorgjalphatest.class” 运行: “cd D:src” “java org.jalpha.test”,类的描述,25,包(Package)的概念 通过包来管理类名空间 防止同名类名的冲突 层次化的结构,类的描述,对个体(个人和机构) 将类文件放在不同的目录下 防止重名 orgjalphamethod1*.java method2*.java,AB

11、C 公司 Engine.java,XYZ 公司 Engine.java,需调用Engine.java?,ABC 公司 comabcEngine.java,XYZ 公司 comxyzEngine.java,26,包(Package)的概念 package org.jalpha; class test ,类的描述,D:srcorgjalphatest.java D:srcorgjalphatest1.java D:srcorgjalphatest2.java,27,对象具有状态和行为 成员变量定义 访问权限修饰符 类型 变量名; 访问权限修饰符 类型 变量名 =初值; 访问权限修饰符 类型 变量名

12、 =初值 ,变量名 =初值; 成员方法定义 访问权限修饰符 方法返回类型 方法名 () throws 异常名 方法体; 类型:基本类型,复合类型(数组、类和接口),类成员-变量和方法,28,访问控制修饰符 公共访问控制符public 被所有类访问 默认访问控制符 被同一包中其他类访问 私有访问控制符 private 被该类自身访问 保护访问控制符 protected 该类自身、同一个包中的其他类、其他包中的子类访问 私有保护访问控制符private protected 该类自身、所有子类访问,类成员变量的访问,29,非访问控制修符 静态变量static 属于类的变量 最终变量final 值在程

13、序的执行过程中不会改变 易失变量volatile 可能同时被多个线程所控制和修改,类成员变量的访问,30,public (公共变量/公共方法) 容许全权访问,无任何限制(先构造对象,再访问),类成员的访问,class A public int x; public void print() class B void test() A a = new A(); a.x = 100; a.print(); ,package abc; class A public int x; public void print() package xyz; import abc.A; class B void te

14、st() A a = new A(); a.x = 100; a.print(); ,直接访问公有变量x 和公共方法print(),31,private (私有变量/私有方法) 仅能在其所定义的类中被访问(先构造对象,再访问),D:javac A.java x 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

15、(); a.x = 100; a.print(); ,32,protected (保护变量/保护方法) 容许类本身、子类(有一定限制)以及同一个包中所有类访问(先构造对象,再访问),类成员的访问,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

16、extends A void test(A a, B b) a.x = 100; a.print(); b.x = 100; b.print(); ,/illegal /illegal /legal /legal,33,无修饰 (友好变量/友好方法) 容许类本身以及同一个包中所有类访问,类成员的访问,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(); ,34,小结,* 指子类与父类不在同一个包中的情况,类成员变量的访问,35,stati

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号