java类和对象设计

上传人:第*** 文档编号:61573039 上传时间:2018-12-04 格式:PPT 页数:109 大小:1.18MB
返回 下载 相关 举报
java类和对象设计_第1页
第1页 / 共109页
java类和对象设计_第2页
第2页 / 共109页
java类和对象设计_第3页
第3页 / 共109页
java类和对象设计_第4页
第4页 / 共109页
java类和对象设计_第5页
第5页 / 共109页
点击查看更多>>
资源描述

《java类和对象设计》由会员分享,可在线阅读,更多相关《java类和对象设计(109页珍藏版)》请在金锄头文库上搜索。

1、第4、5章 类和对象设计,2,主要内容,4.1 面向对象的基本概念 4.2 定义Java类 4.3 Java对象 4.4 Java包 4.5 Java的面向对象特性 4.6 抽象类 4.7 接口,3,4.1 面向过程与面向对象,面向过程程序设计: C语言 分析出解决问题所需步骤(过程),然后用函数把这些步骤一步一步实现,使用时一个一个依次调用。 程序的数据与操作(函数)分离,导致难以扩展,维护困难 代码重用性低,4,4.1面向对象的基本概念,面向对象程序设计: Java/C# 思想:功能来划分问题,抽象事物为对象,以人类思维模拟现实中的客观事物 数据(属性)与数据操作(方法)作封装在一起 维护

2、方便,软件重用效率高(操作对象),5,我要去新疆 面向过程 我开动车,挂挡,踩油门, 过江西、湖南、四川、青海到新疆 面向对象 我命令车去新疆 车怎么去我不用关 信息封装在车这个类的内部,使用者无需了解,4.1面向对象的基本概念,6,4.1面向对象的基本概念,类与对象 消息和方法 面向对象特征:封装性,继承性、多态性,7,类与对象,类:一种复合数据类型,是将不同类型的数据和与这些数据相关的操作封装在一起的封装体。 对象:类的一个实例;,1. 类是某一类具有相似属性和方法对象的抽象;而对象是某一种类的实例。 2. 类和对象可理解为数据类型与值的关系,8,方法,消息,变量:即指对象所知道的状态(属

3、性) 方法:指对象的功能单元(操作)。 软件对象通过相互间传递消息来相互作用和通信 消息由三部分组成: 1. 接受消息的对象 2. 要完成方法的名字 3. 方法需要的参数,9,封装,什么是封装? 一种将操作和涉及的数据捆绑在一起从而避免外部干扰或误用的机制 Java中最基本的封装单元是类,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。,10,继承,什么是继承? 继承是子类获取父类中定义的方法和变量,就像它们属于子类本身一样,另可新增变量、方法,class Person String name; int age; int sex; sleep() ,class Tra

4、sh_Car extends Car int stu_no; goSchool() ,11,何时选择继承性,一个很好的经验: “C是一个A吗?” 如果是则让C做A的子类.,常犯的错误A有一个C吗? 例如让汽车轮子成为汽车的子类是错误的,在父类中只定义各子类共同需要的属性和方法,派生类时,由子类自己增加新的属性和方法。,12,多态,什么是多态? 多态性是指同名的方法可以有多种不同的功能,或者相同的接口有多种实现方法.,13,主要内容,4.1 面向对象的基本概念 4.2 定义Java类 4.3 Java对象 4.4 Java包 4.5 Java的面向对象特性 4.6 抽象类 4.7 接口,14,4

5、.2 定义Java 类,包括类声明和类体 类声明: publicabstract|final class className extends superclassName implements interfaceNameList ,15,Java类体,class 类名 / 类名一般首字母大写 修饰符 类型 变量名; /成员变量 修饰符 返回类型 方法名(参数列表) / 一般小写 语句 /成员方法体 常用修饰符:public | protected | private static final transient volatile,16,初探类与对象,class Circle float x,y

6、; float r; double getArea() return r*r*3.14; double getCircumference() return 2*r*3.14; public static void main(String args) Circle c=new Circle(); /创建类的对象 c c.r=3;c.x=0;c.y=0; /为对象c的成员变量赋值 System.out.println(“Area”+c.getArea(); /访问成员方法 System.out.println(“Circumference”+c.getCircumference(); ,17,成员

7、变量,修饰符 基本类型 变量名; /成员变量 类型:简单类型(int、float)、数组、类(如String) 成员变量定义在所有成员方法外,作用域是整个类 类中的所有方法可直接访问成员变量 使用方法:对象名.成员变量,class Student int no; String name; Birthday day; ,class Birthday int year; int month; int day; ,18,成员方法,返回值类型 方法名(参数列表) /方法体 返回值类型可为基本类型或类,无返回值时需为void 参数列表可有若干个参数,用逗号隔开 返回值须与返回类型一致,或是其子类 使用方

8、法:对象名.成员方法(参数),class Rectangle double length; double width; double area() return length * width; void setDim(double w, double l) width = w; length = l; ,19,成员方法(方法体),方法体包括局部变量的声明以及所有合法的Java指令。 局部变量的作用域在该方法内部。 若局部变量与类的成员变量同名,则类的成员变量被隐藏。 this用在一个方法中引用当前对象,它的值是该方法所在的对象。,20,成员方法(方法体)实例(1),class Variable

9、 int x=0,y=0,z=0; /类的成员变量 void init(int x,int y) this.x=x; this.y=y; int z=5; /局部变量,隐藏全局变量 System.out.println(“* in init*”); System.out. println(“x=”+x+“ y=”+y+“ z=”+z) ,21,成员方法(方法体)实例(2),public class VariableTest public static void main(String args) Variable v=new Variable(); System.out.println(“*b

10、efore init*”); System.out.println(“x=”+v.x+ “y=”+ v.y+“z=”+v.z); v.init(20,30); System.out.println(“*after init*”); System.out.println(“x=”+v.x+ “y=”+ v.y+“z=”+v.z); ,22,成员方法(方法体)实例(3),运行结果 c:java VariableTest *before init* x=0 y=0 z=0 * in init * x=20 y=30 z=5 *after init* x=20 y=30 z=0,23,方法重载(Met

11、hod Overloading),方法重载指多个方法享有相同的方法名 区别在于:参数类型不同,或个数不同; 返回类型不能用来区分重载的方法。,24,方法重载,public class OverLoad int i = 3, j=4; int sum( ) return i+j; int sum(int a, int b) return a+b; int sum(int a,int b, int c) return a+b+c; double sum(double a, double b) return a+b; public static void main(String args) Over

12、Load o = new OverLoad(); System.out.println(o.sum(); System.out.println(o.sum(5,6); System.out.println(o.sum(5,8,4); System.out.println(o.sum(3.2,2.15); ,25,实例化对象,类是一种抽象的复合数据类型,只有实例化生成对象后才能使用。 格式: 类名 对象名 = new 类名(参数列表); Student stu1 =new Student(“Bin”,20) ; Student stu2 =new Student(“Tom”,21) ; new为

13、每个对象分配不同内存空间,并返回该对象的引用(即对象在内存中首地址);改变对象互不影响。 stu1=stu2 等价于 stuq.equlas(stu2) 判断两对象是否地址相等 结果是false 只声明类的实例,不创建对象可用null Student stu = null;/未分配内存空间 stu=new Student();,26,初始化对象,方式一:定义成员变量时直接赋初值 calss Student String name=“zhangshan”; 方式二-使用构造方法,27,构造方法,定义: 方法名与类名相同;不返回任何数据类型(void也不能有) 用法:构造方法只能由new运算符调用

14、 作用:利用构造方法进行初始化 注意:构造方法不能被继承;重载经常用于构造方法,28,构造方法,示例 class Point int x,y; Point() x=0; y=0; Point(int x, int y) this.x=x; this.y=y; 完整例子,29,成员方法(值参传递),public class PassTest float ptValue; public static void main(String args) int val; PassTest pt=new PassTest(); val=11; System.out.println(“Original Int

15、 Value is:”+val); pt.changedInt(val); System.out.pringln(“Int Value after Change is:” +val); pt.ptValue=101f; System.out.println(“Original ptValue is:”+pt.ptValue); pt.ChangeObjValue(pt); System.out.println(“ptValue after Change is:”+pt.ptValue); ,30,成员方法(值参传递),public void changeInt(int value) value=55; public void changeObjValue(PassTest ref) ref.ptValue=99f; ,31,成员方法(值参传递),运行结果 c:java PassTest Original Int Value is : 11 Int Value after Change is: 11 Original ptValue is: 101.0 ptValue after Change is : 99.0,32,主方法与命令行参数,public static void main(String arg

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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