java类和对象设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《java类和对象设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 对象 设计 课件
- 资源描述:
-
1、2主要内容4.1 面向对象的基本概念4.2 定义Java类4.3 Java对象4.4 Java包4.5 Java的面向对象特性4.6 抽象类4.7 接口34.1 面向过程与面向对象面向过程程序设计:C语言分析出解决问题所需步骤步骤(过程过程),然后用函数函数把这些步骤一步一步实现,使用时一个一个依次调用。程序的数据与操作(函数函数)分离,导致难以扩展,维护困难代码重用性低44.1面向对象的基本概念面向对象程序设计:Java/C#思想:功能功能来划分问题,抽象抽象事物为对象对象,以人类思维模拟现实中的客观事物数据(属性属性)与数据操作(方法方法)作封装在一起维护方便,软件重用效率高(操作对象)5
2、 我要去新疆面向过程面向过程u 我开动车,挂挡,踩油门,过江西、湖南、四川、青海到新疆面向对象面向对象u 我命令车去新疆u 车怎么去我不用关u 信息封装在车这个类的内部,使用者无需了解4.1面向对象的基本概念64.1面向对象的基本概念n类与对象n消息和方法n面向对象特征:封装性,继承性、多态性7类与对象n类:一种复合数据类型复合数据类型,是将不同类型的数据和与这些数据相关的操作封装在一起的封装体。n对象:类的一个实例;1.类是某一类具有相似属性和方法对象的抽象;而对象是某一种类的实例。类是某一类具有相似属性和方法对象的抽象;而对象是某一种类的实例。2.类和对象可理解为数据类型与值的关系类和对象
3、可理解为数据类型与值的关系8方法,消息n变量:即指对象所知道的状态(属性)n方法:指对象的功能单元(操作)。n软件对象通过相互间传递消息来相互作用和通信n消息由三部分组成:n1.接受消息的对象n2.要完成方法的名字n3.方法需要的参数对象对象B对象对象 Amessage9封装n什么是封装?n一种将操作和涉及的数据操作和涉及的数据捆绑在一起从而避免外部干扰或误用避免外部干扰或误用的机制nJava中最基本的封装单元是类封装实际上使用方法将类的封装实际上使用方法将类的数据隐藏起来,控制用户对数据隐藏起来,控制用户对类的修改和访问数据的程度。类的修改和访问数据的程度。私有数据私有数据方法方法方法方法数
4、据数据对象对象A对象对象B公有数据公有数据10继承n什么是继承?n继承是子类获取父类中定义的方法和变量,就像它们属于子类本身一样,另可新增变量、方法class Person String name;int age;int sex;sleep()class Trash_Car extends Car int stu_no;goSchool()11何时选择继承性n一个很好的经验:“C是一个A吗?”n如果是则让C做A的子类.常犯的错误常犯的错误A有一个有一个C吗吗?例如让汽车轮子成为汽车的子类是错误的例如让汽车轮子成为汽车的子类是错误的在父类中只定义各子类共同需要的属性和方法,派生类时,由子类自己增
5、加新的属性和方法。12多态n什么是多态?n多态性是指同名的方法可以有多种不同的功能,或者相同的接口有多种实现方法.13主要内容4.1 面向对象的基本概念4.2 定义Java类4.3 Java对象4.4 Java包4.5 Java的面向对象特性4.6 抽象类4.7 接口144.2 定义Java 类n包括类声明类声明和类体类体n类声明:publicabstract|final class className extends superclassName implements interfaceNameList 15Java类体 class 类名 /类名一般首字母大写首字母大写 修饰符 类型 变量名
6、;/成员变量 修饰符 返回类型 方法名(参数列表)/一般小写一般小写 语句 /成员方法体 常用修饰符:public|protected|private static final transient volatile16初探类与对象class Circle float x,y;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
7、.y=0;/为对象c的成员变量赋值 System.out.println(“Area”+c.getArea();/访问成员方法 System.out.println(“Circumference”+c.getCircumference();17成员变量 修饰符 基本类型 变量名;/成员变量类型:简单类型(int、float)、数组、类(如String)成员变量定义在所有成员方法外,作用域是整个类类中的所有方法可直接访问成员变量 使用方法:对象名对象名.成员变量成员变量class Student int no;String name;Birthday day;class Birthday int
8、 year;int month;int day;18成员方法返回值类型返回值类型 方法名(参数列表)/方法体 返回值类型可为基本类型或类,无返回值时需为void参数列表可有若干个参数,用逗号隔开 返回值须与返回类型一致,或是其子类使用方法:对象名对象名.成员方法成员方法(参数参数)class Rectangle double length;double width;double area()return length*width;void setDim(double w,double l)width=w;length=l;19成员方法(方法体)n方法体包括包括局部变量的声明以及所有合法的Jav
9、a指令。n局部变量的作用域在该方法内部。n若局部变量与类的成员变量同名,则类的成员变量被隐藏。nthis用在一个方法中引用当前对象,它的值是该方法所在的对象。20成员方法(方法体)实例(1)class Variable 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 Vari
10、ableTest public static void main(String args)Variable v=new Variable();System.out.println(“*before 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 i
11、nit*x=0 y=0 z=0 *in init*x=20 y=30 z=5 *after init*x=20 y=30 z=023方法重载(Method Overloading)n方法重载指多个方法享有相同的方法名n区别在于:参数类型不同,或个数不同;n返回类型不能用来区分重载的方法。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
12、 b)return a+b;public static void main(String args)OverLoad 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实例化对象n类是一种抽象的复合数据类型,只有实例化生成对象后才能使用。n格式:类名 对象名=new 类名(参数列表);Student stu1=new Student(“Bin”,20);Stud
13、ent stu2=new Student(“Tom”,21);nnew为每个对象分配不同内存空间,并返回该对象的引用(即对象在内存中首地址);改变对象互不影响。nstu1=stu2 等价于 stuq.equlas(stu2)判断两对象是否地址相等 结果是结果是falsen只声明类的实例,不创建对象可用null Student stu=null;/未分配内存空间 stu=new Student();26初始化对象n方式一:定义成员变量时直接赋初值 calss Student String name=“zhangshan”;n方式二-使用构造方法27构造方法n定义:方法名与类名相同;不返回任何数据
14、类型(void也不能有)n用法:构造方法只能由new运算符调用n作用:利用构造方法进行初始化n注意:构造方法不能被继承;重载经常用于构造方法28构造方法n示例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(“
15、Original Int 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
16、=55;public void changeObjValue(PassTest ref)ref.ptValue=99f;31成员方法(值参传递)n运行结果c:java PassTestOriginal Int Value is:11Int Value after Change is:11Original ptValue is:101.0ptValue after Change is:99.032主方法与命令行参数npublic static void main(String args)n该方法被定义为public static void也就是公开的静态的无返回值的方法,且参数args为一个字符
17、串数组,用来接收从命令行输入的参数。n参数之间使用空格隔开。nJava解释器会自动处理,把用空格隔开的各个参数通过args数组传递给main方法。n参数的下标从0开始,args0表示传入的第一个参数,args1表示传入的第二个参数,以此类推。33Example:public class TestJava public static void main(String args)for(int i=0;args!=null&iJavajava TestJava this is a parameter test第0个参数:this第1个参数:is第2个参数:a第3个参数:parameter第4个参数
18、:test34finalize()方法n在父类java.lang.Object中实现n对对象进行垃圾收集前,系统自动调用n自己重写时需要调用父类的finalize()方法n该方法最常见的作用是确保释放实例占用的全部资源。nprotected void finalize()throws throwable /本类的资源清除代码 super.finalize();35主要内容4.1 面向对象的基本概念4.2 定义Java类4.3 Java对象4.4 Java包4.5 Java的面向对象特性4.6 抽象类4.7 接口364.3 Java对象n一旦定义了所需的类,就可以创建该类的变量,创建类的变量称为
19、类的实例化,类的变量也称为类对象、类的实例等。n对象通过消息传递来进行交互n消息传递即激活指定的某个对象的方法以改变其状态或让它产生一定的行为。37对象的生命周期n对象是在程序运行中创建生成的,其所占的空间在程序运行中动态分配。当一个类的对象完成了它的使命,为节省资源,Java的垃圾收集程序就会自动收回这个对象所占的空间。即类对象有自己的生命周期。n生成n使用n清除38对象的生成n包括声明、实例化和初始化 Type objectName=new type(paramlist);n(1)声明:Type objectName n声明并不为对象分配内存空间,而只是分配一个引用空间;n(2)实例化:运
20、算符new为对象分配内存空间,它调用对象的构造方法,返回引用;一个类的不同对象分别占据不同的内存空间。n(3)生成:自动执行构造方法,进行初始化;根据参数不同调用相应的构造方法。39对象的使用n对象的引用指向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性。n通过运算符“.”可以实现对变量的访问和方法的调用。40调用对象的变量n格式:objectReference.variablenobjectReference是一个已生成的对象,也可以是能生成对象的表达式n例:n Rectangle r=new Rectan
21、gle();n r.length=10;n r.width=12;41调用对象的方法n格式:objectReference.methodName(paramlist);class RectDemo2 public static void main(String args)Rectangle rect1=new Rectangle();Rectangle rect2=new Rectangle();double ar;rect1.setDim(20,10);/初始化每个长方形 rect2.setDim(6,3);ar=rect1.area();System.out.println(第一个长方形的
22、面积是:+ar);ar=rect2.area();System.out.println(第二个长方形的面积是:+ar);42实例成员和类成员n实例成员为特定实例所有,通过对象名访问;类成员为类所有,不属于某一个对象,可以通过类名访问。n类成员的格式(static):nstatic type classVar;nstatic returnType classMethod(paramlist)nn n43实例变量和类变量n每个对象的实例变量都分配内存n通过对象来访问这些实例变量n类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量。n类变量可通过类名直接访问,无需先生成一个实例对象n也
23、可以通过实例对象访问类变量44实例变量和类变量class ABCD char data;static int_share_data;class Demo ABCD a,b,c,d;object bchar dataobject cchar dataObject bchar datastatic intshare_dataobject bchar data45实例方法和类方法n类(static)方法不能访问实例变量,只能访问类变量n类方法可以由类名直接调用n类方法中不能使用this或super46实例方法和类方法class member static int classVar;int insta
24、nceVar;static void setClassVar(int i)classVar=i;/instanceVar=i;/cant access nostatic member static int getClassVar()return classVar;void setInstanceVar(int i)classVar=i;instanceVar=i;int getInstanceVar()return instanceVar;47实例方法和类方法public class test public static void main(String args)member m1=new
25、member();member m2=new member();m1.setClassVar(1);m2.setClassVar(2);System.out.println(m1.classVar=+m1.getClassVar()+m2.ClassVar=+m2.getClassVar();m1.setInstanceVar(11);m2.setInstanceVar(22);System.out.println(m1.InstanceVar=+m1.getInstanceVar()+m2.InstanceVar=+m2.getInstanceVar();48实例方法和类方法n运行结果c:j
展开阅读全文