JAVA_4_1类和对象

上传人:油条 文档编号:26870985 上传时间:2018-01-02 格式:PPT 页数:55 大小:1.48MB
返回 下载 相关 举报
JAVA_4_1类和对象_第1页
第1页 / 共55页
JAVA_4_1类和对象_第2页
第2页 / 共55页
JAVA_4_1类和对象_第3页
第3页 / 共55页
JAVA_4_1类和对象_第4页
第4页 / 共55页
JAVA_4_1类和对象_第5页
第5页 / 共55页
点击查看更多>>
资源描述

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

1、1,第四章 Java面向对象特性,对象与类对象生命周期类的创建重载子类,2,对象的基本概念,面向对象程序语言三个关键特点:封装 ( Encapsulation )多态 ( Polymorphism )继承 ( Inheritance ),3,基本数据类型和聚集类型的变量与一些操作(如+, -)之间不需特殊的联系。在面向对象语言中,在数据类型的声明与操作 这些数据的代码声明之间建立紧密联系,这种 联系通常描述为一种抽象数据类型。 在Java中,抽象数据类型的概念用类来实现。,抽象数据类型,4,类和对象,类是特定类型对象的定义,包括:对象包含的 数据,对象的创建及对象对自身数据操作的方法。类是一个

2、模板。对象是在其类模型基础上构造出的,是具体的 实例。,5,类和对象举例,类定义:Class EmpInfoString name;String designation;String department;void print( ) System.out.println(name+“is”+designation+“at”+department);,对象的生成与使用:EmpInfo employee = new EmpInfo( );employee.name = “ Robert Javaman”;employee.designation = “Manager”;employee.depar

3、tment = “Coffee shop”;employee.print( ); .,6,Java的类,public|privateabstract|final class classname extends SupperClassName implements InterfaceNameList /类体,包括变量和方法 ,类的修饰符:其他类对该类的访问权限,类的修饰符:说明该类的属性,类的继承:说明该类的父类,类实现的接口,提供类的对象在生命周期中需要的所有代码:构造和初始化对象的构造方法、类及其对象的变量、实现类及其对象行为的方法等,7,Java的类,类的修饰符private(私有)只能被

4、同包的类访问public(公共)可以被所有的类访问abstract(抽象)不能被实例化final(最终)不能被继承,8,Java的类,类体的结构 成员变量说明构造方法说明静态初始化说明方法说明,9,类定义举例,class Personint age;void shout()System.out.println(“oh,my god! I am “ + age);age是类的属性 ,也叫类成员变量 。shout是方法也叫类的成员函数。shout方法可以直接访问同一个类中的age变量 ,如果一个方法中有与成员变量同名的局部变量,该方法中对这个变量名的访问是局部变量,而不再是成员变量。,10,类定义

5、举例,下面是一个关于日期的类class Tdate private int year; private int month; private int day; public String getData() return day+”/”+month+”/”+year; ,11,类定义举例,public int SetDate(int y,int m,int d) if (d0 ,12,类定义举例,public class UseTDate public static void main(String args) TDate myDate = new Tdate(); if(myDate.set

6、Date(22,5,2003) = 0 System.out.println(myDate.getDate(); ,13,实现类的封装性,如果外面的程序可以随意修改一个类的成员变量,会造成不可预料的程序错误,就象一个人的身高,不能被外部随意修改,只能通过各种摄取营养的方法去修改这个属性。 在定义一个类的成员(包括变量和方法)时,使用private关键字说明这个成员的访问权限,这个成员成了类的私有成员,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用。,14,实现类的封装性,为了实现良好的封装性,我们通常将类的成员变量声明为private,再通过public的方法来对这个变量进行访

7、问。对一个变量的操作,一般都有读取和赋值操作,我们分别定义两个方法来实现这两种操作,一个是getXxx()(Xxx表示要访问的成员变量的名字),用来读取这个成员变量操作,另外一个是setXxx()用来对这个成员变量赋值。一个类通常就是一个小的模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。我们在进行程序的详细设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。用总统指挥一支军队的例子来说明这种效果。,15,数据隐藏与封装,数据隐藏:使用private定义的成员

8、变量,只能 在成员方法中使用,其它方法中禁止使用。优点: 保证对象中数据的一致性。封装:基本数据和对数据进行的操作方法的结合。 优点:隐藏类中具体实现的细节。强迫程序员使用统一的接口访问数据。使代码可维护性好。,16,数据隐藏与封装举例,Class Dateprivate int day, month, year;void setDate( int a, int b, int c)day = a;month = b;year = c ;Date d1;d1.new Date( );d1.setDate(30,9,2001);.,d1.day = 30;(错误!),17,类成员方法定义,一般格式

9、: ()throws 方法是传值的,方法调用不会改变参数的值。当对象作为参数时,参数的值是该对象的引用, 这时对象的内容可以在方法中改变,但是对象的 引用不会改变。,18,类的创建,19,类的构造函数,作用: 当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码。这就好像我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的构造方法中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们要“洗澡”了。,20,构造方法定义: public 类名(参数) 构造方法的特征它具有与类

10、相同的名称;它不含返回值;它不能在方法中用return语句返回一个值注意 在构造方法里不含返回值的概念是不同于“void”的,在定义构造方法时加了“void”,结果这个方法就不再被自动调用了。,类的构造函数,21,构造方法的一些细节,在java每个类里都至少有一个构造方法,如果程序员没有在一个类里定义构造方法,系统会自动为这个类产生一个默认的构造方法,这个默认构造方法没有参数,在其方法体中也没有任何代码,即什么也不做。由于系统提供的默认构造方法往往不能满足编程者的需求,我们可以自己定义类的构造方法,来满足我们的需要,一旦编程者为该类定义了构造方法,系统就不再提供默认的构造方法了。 声明构造方法

11、,如无特殊需要,应使用public关键字,在我们前面例子中,可以使用private访问修饰符吗?,22,如果在类定义中无构造函数,Java在编译时可缺省加入构造方法。如 public Employee( ) ;一旦在类中有一个自己声明的构造函数,则缺省的构造函数将不被加到源程序中。,缺省构造函数,23,举例,Public class PassTestfloat ptValue;public void changeInt(int value)value = 55 ; public void changeStr(String value)value = new String(different“)

12、; public void changeObjValue( PassTest ref)ref.ptValue = 99.0f; public static void main(String args )String str;int val;PassTest pt= new PassTest( );val = 11;pt.changeInt(val);System.out.println(“Int value is:” +val);str = new String(“hello”);pt.changeStr(str);System.out.println(“str value is:” +str

13、);pt.ptvalue = 101.0f ;pt.changeObjValue(pt);System.out.println(“pt value is:” +pt.ptValue);,结果: Int Value is : 11Str Value is : hellopt value is : 99.0f,24,重载(Overloading),含义:在同一个类中一个方法名被用来定义多个 方法。 classScreen public void print( int i) public void print( float i) public void print( String str ) 重载必

14、须遵守原则: 参数表必须不同,以此区分不同方法体。返回类型、修饰符可相同或不相同。,25,激活重载的构造函数,在一个构造函数中可以利用另一个构造函数。class Employeeprivate String name;private int salary;public Employee(String n, int s)name = n ;salary = s;public Employee( String n) this(n,0); public Employee( ) this(“Unknown”); ,26,this是什么?,如果func2方法被调用 ,一定是事先已经有了一个存在的对象,func2被作为那个对象的方法被使用。 在func2内部能引用别的对象 ,同样也能引用func2所属的那个对象。在func2中,自己所属的那个对象的引用名称是什么呢? this关键字在java程序里的作用和它的词义很接近,它在函数内部就是这个函数所属的对象的引用变量。,27,“this” 引用,关键字this 用来指向当前对象本身。例:class Date private int day, month,year;public Date getTommorrow( )this.day+;,

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

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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