《Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华03_类与对象》由会员分享,可在线阅读,更多相关《Java程序设计 教学课件 ppt 作者 刘德山 金百东 张建华03_类与对象(25页珍藏版)》请在金锄头文库上搜索。
1、3 类与对象,3.0 本章内容,面向对象的程序设计思想 类和对象 变量和方法 this关键字 目录访问机制 (package和import语句) 访问权限 封装机制 (setor &getor),3.1面向对象思想,面向对象(Object-Oriented)是一种思想,也是一种技术。 面向对象是具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。 对客观世界的事物加以抽象,从事物出发,来构造软件系统。 面向对象是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。 充分研究
2、对象之间的关系。,3.1 面向对象思想,对象之间的关系 包含关系:对象A是对象B的属性 实例: 继承关系:对象A是对象B 实例: 关联关系:对象A引用对象B(主要是方法的参数) 实例:,3.1 面向对象思想,对象代表虚构的或现实的实体,比如飞机,鲨鱼,氧化反应,是具有明显边界和含义的概念,抽象或事物。 类是一组具有相同结构和行为(功能)的对象集合的抽象。 共同的结构通过属性来表示(数据)。 共同的行为通过操作来表示(功能)。 例:用面向对象的方法模拟“狗捉老鼠”。,3.1 面向对象思想,对象是类的实例,实例是对象的同义词,类是生成对象的模板。 类是静态的定义,它们的存在,关系和语义在在程序运行
3、之前就已经定义好 了。 而对象是动态生成的。它们在程序执行时被创建和删除。 例:Dog类,属性名字,颜色,年龄,有一方法输出dog的信息。,3.2 类和对象概述(概念),类是组成Java程序的基本要素。它封装了一类对象的状态和方法,是一类对象的原型 。 域对应类的静态属性。域又称为域变量、属性、成员变量等 . 方法是类的动态属性,标志了类所具有的功能和操作。,类是某类事物的抽象,对象是一个个具体的数据。对象是类的实例。 例:EP.java TestStudInfo.java,3.3 类中变量(类的属性),成员变量 实例变量 静态变量 局部变量 常变量,class 类名 变量定义; /对应静态属
4、性 方法定义; /对应动态属性 ,了解不同变量的内存分配情况,3.3 类中变量(续),变量初始化的概念 成员变量使用之前,可以对变量赋值,这个过程叫变量初始化。 【例3-3】成员变量初始化示例。 VariousInit .java,3.4类中方法,类中方法按功能来分有两类:构造方法,用于建立对象;成员方法,用于执行对象的功能。与类中变量相似,成员方法一般分为实例方法(普通方法)、类方法(静态方法)和常方法。类方法必须由static修饰,其特点与类变量相似,是全局方法,可以通过类名直接调用。常方法必须由final修饰,表明不能由子类重写。 方法格式。 type methodName (param
5、List) 方法体; ,3.4类中方法(构造方法),构造方法 成员方法 实例方法 类方法,构造方法 是一种特殊的方法。Java中的每个类都有构造方法,用来初始化该类的一个新的对象。 构造方法具有和类名相同的名称,而且不返回任何数据类型。 类都有一个至多个构造方法,如果在定义类对象时没有定义任何构造方法,系统会自动产生一个构造方法,称为默认构造方法,3.4类中方法(构造方法),构造方法的示例 【例3-4】编程求圆和长方形的面积,并编写测试功能。 TestArea1.java, TestArea2.java(教材) 设计一个表示图书的book类,它包含图书的作者、书名、书号、月销售量等属性,另有两
6、个构造方法(一个带参数,一个不带参数),有一个成员方法printBook()用于输出数据。可设置一测试类测试并输出。 设计并测试一个求长方体的体积和表面积的类。 练习:编制一个Circle类,定义该类的两个对象,一个成员方法显示对象信息。,3.4 类中方法(静态方法),静态变量(类变量)最本质的特点是:它们是类的域,不属于任何一个类的具体对象实例。它不保存在某个对象实例的内存区间中,而是保存在类的内存区域的公共存储单元。 静态变量可以通过类名直接访问,也可以通过实例对象来访问,两种方法的结果是相同的。 用static修饰符修饰的方法仅属于类的静态方法,又称为类方法。 (1) 非static的方
7、法是属于某个对象的方法,在这个对象创建时,对象的方法在内存中拥有自己专用的代码段。而static的方法是属于整个类的,它在内存中的代码段将随着类的定义而进行分配和装载,不被任何一个对象专有。 (2) 由于static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即static方法只能处理static域或调用static方法。 (3) 类方法中,不能访问实例变量。在类方法中不能使用this 或super。,静态方法和静态变量的示例。 Monkey.java StaticAndInstance.java 进行内存分析。,3.4 类中方法(方法参数)
8、,方法的参数 基本数据类型做参数。 引用数据类型做参数。,引用数据类型做参数。,方法重载: 即指多个方法可以享有相同的名字。但是这些方法的参数必须不同,或者是参数个数不同,或者是参数类型不同 。 示例: 编制利用三角形三边求三角形面积的类。 分析:等边三角形可用1个值初始化,等腰三角形可用2个值初始化,普通三角形可用3个值初始化。因此,可重载三个构造函数。,3.5 this关键字,1在方法及构造方法中,使用this来访问域及方法。 2使用this解决局部变量与域同名的问题。 3构造方法中,用this调用另一构造方法。 示例:修改StudInfo类的构造方法,示例:Point.java,3.6
9、目录访问控制(包package),Java提供包(package)来管理类名空间。包实际上提供了一种命名机制和可见性限制机制。 包是一种松散的类的集合,一般不要求处于同一个包中的类有明确的相互关系,如包 含、继承等,但是由于同一包中的类在默认情况下可以互相访问,所以为了方便编程和管 理,通常把需要在一起工作的类放在个包里。 包及子包的定义,实际上是为了解决名字空间、名字冲突,它与类的继承没有关系。事实上,一个子类与其父类可以位于不同的包中。 在简单情况下,Java源文件默认为package语句,这时称为无名包(default package)。无名包不能有子包。,3.6 目录访问控制(包pac
10、kage),为了能使用Java中已提供的类,需要用import语句来引入所需要的类。 import package1.package2. (classname |*); 其中,package1.package2表明包的层次,与package语句相同,它对应于文件目录,classname则指明所要引入的类,如果要从一个包中引入多个类,则可以用星号(*)来代替。例如: import java.awt.*; import java.util.Date; Java编译器为所有程序自动引入包java.lang,因此不必用import语句引入它包含的所有的类,但是若需要使用其他包中的类,必须用import
11、语句引入。 注意:使用星号(*)只能表示本层次的所有类,不包括子层次下的类。 例如,经常需要用两条import语句来引入两个层次的类: import java.awt.*; import java.awt.event.*;,3.6 目录访问控制(包实例),/MyApp.java import FUNC.a; import FUNC.FUNC2.b; class MyApp /访问a,访问b /a.java package FUNC; class a /b.java package FUNC.FUNC2; class b ,public class TestPack public static
12、void main(String args) System.out.println(“Hello1“); package tom; public class TestPack2 public static void main(String args) System.out.println(“Hello2“); package tom.tom2; public class TestPack3 public static void main(String args) System.out.println(“Hello3“); ,3.7 访问权限,成员的访问控制符 更好的模拟客观世界的事物;提供良好
13、的封装机制,3.7 访问权限( 续),类的访问控制符 在定义类时,也可以用访问控制符。类的访问控制符或者为public,或者默认。若使用public,其格式为: public class 类名 如果类用public修饰,则该类可以被其他类所访问;若类默认访问控制符,则该类只能被同包中的类访问。,3.7 访问权限( 实例),tom/U.java tom/TestAccess.java tom/U.java tom2/TestAccess.java,综合实例,编制基本账户类,属性有账号、密码、余额,能存款和取款。并编制简单测试类验证方法是否正确。 编一个学生类,属性有学号、姓名、年龄,要求学号自动生成,从1、2、3、N。并编制测试类显示每个学生信息。 要求: 练习要求 上机要求 上机后要求 问答要求,总结(核心:图解及内存分析),类与对象的概念 类之间的关系(4种) class new 引用 方法重载 构造方法重载 继承 extends 方法和域的重写 增加 重载 this&super,pacakeg &import private default protected public static final abstract polymorphism/动态绑定 abstract interface,implements 父类引用子类对象 upcasting,downcasting,