java课件第四章

上传人:w****i 文档编号:92221564 上传时间:2019-07-08 格式:PPT 页数:68 大小:591.50KB
返回 下载 相关 举报
java课件第四章_第1页
第1页 / 共68页
java课件第四章_第2页
第2页 / 共68页
java课件第四章_第3页
第3页 / 共68页
java课件第四章_第4页
第4页 / 共68页
java课件第四章_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《java课件第四章》由会员分享,可在线阅读,更多相关《java课件第四章(68页珍藏版)》请在金锄头文库上搜索。

1、,本章主要内容,类: 域、方法 构造方法、方法的重载 类的继承 包: package语句 访问控制符 接口: 定义 实现,1 类、域和方法,Java 程序,类,类,域1,域2,方法1,方法2,一、定义类中的域和方法 修饰符 class 类名称 域定义; 方法定义; ,类名,域,方法,例: class Person string name; int age; void sayHello() System.out.println(“Hello!”); ,域,方法,1、域(field) 对应类的静态属性 属性 变量, 定义语法: 类型名 域名; 例如:int age; 系统默认值(参见P36,表3-

2、1),2、方法(method), 类的动态特性 具有的功能和操作 定义语法: 修饰符 返回值类型 方法名(形参列表) 返回值 return语句,Boolean isOlderThan (int anAge) boolean flg; if(ageanAge) flg=true else flg=false; return flg; ,形参,返回类型,返回语句,二、构造方法与对象的创建 1、构造方法(constructor) 与类同名的方法 无返回值 主要完成对象的初始化工作 不用显式调用,用new来调用 对象创建时会自动调用构造方法,Person (String n, int a) name=

3、n; age=a; ,2、默认构造方法,如果没有定义任何构造方法,系统会自动产生一个构造方法 默认构造方法不带参数,并且方法体为空, Person(),3、创建对象, 创建对象 变量名=new 构造方法(参数); p=new Person(“zhang”, 28), 声明变量 类名 变量名; Person p;, 两步合并 类名 变量名=new 构造方法(参数) Person p=new Person(“zhang”,28);, new:它以类为模板,开辟空间并执行相应的构造方法。 对象变量:是引用型变量,三、使用对象 1、对象.域,对象.方法。 2、只能通过对象变量来访问对象的域或方法。 例

4、如:p.sayHello();,3、构造方法的重载:可以让用户用不同的参数来构造对象。 例:P76,四、方法的重载(overloading) 1、方法的名字相同,参数不同。 2、参数个数不同,或参数类型不同。 例:4-2,P76,2、作用 使用this访问域及方法 使用this解决局部变量或参数与域同名的问题 在构造方法中,用this调用另一个构造方法,必须放在第一句,五、this的使用,1、表示对象本身 普通方法中表示调用该方法的对象 在构造方法中表示新创建的对象,3、注意 可以引用该类中的成员,也可引用父类成员 不能通过this引用类(static)变量、类(static)方法,2 类的继

5、承,一、概述,1、父类(superclass):基类,被继承的类。 2、子类(subclass):衍生类、派生类,由继承得来的类。 3、类派生:子类与父类间的继承动作称为类派生。 4、类层次:类的继承关系所形成的结构。,5、Java中,所有的类都是通过直接或间接地继承java.lang.Object得到的。,分类的角度,1、分类就是一个抽象化的过程,低层次分类都具备高层次分类的特性。 2、一般化特殊化,遗传角度,后代的特征或多或少都来自于父母的遗传,但后代还具有自己特有的特征。,基类与衍生类之间就具有遗传的关系,其成员一部分继承于基类,而衍生类本身所具有的其它特性,则在定义衍生类时,再增加与修

6、改。, 继承对系统开发的意义 1、使用继承的优点:,便于管理系统中的对象: 基类的修改直接反映到子类上 系统的扩充更加容易: 从基类继承即可,2、程序代码的重用(software reuse) 加快开发速度 减少程序错误,二、派生子类,1、语法: 修饰符 class A extends B ,2、A类继承B类,A类是B类的直接子类 3、如果没有extends子句,则该类默认为java.lang.Object的子类,Person,+name:String +age:int +birthDate:Date,+getInfo():String,Student,+school:String,箭头表示子

7、类与父类的关系,1、域的继承 子类继承父类的所有非私有域。,2、域的隐藏 子类重新定义一个与父类域变量相同的变量。,3、域的添加 定义子类时,加上新的域变量。,三、域的继承与隐藏、添加,A类的成员 (子类),A类的成员,B类的成员 (父类),B类的一些成员 (父类),A类增加的成员,1、方法的继承 子类继承父类的所有非私有方法,2、方法的覆盖(overriding) 子类可以重新定义与父类同名的方法,3、方法的重载(overloading) 一个类中可以有几个同名的方法,4、方法的添加 子类可以增加新方法,四、方法的继承、覆盖与添加,1、使用super访问父类的域和方法 2、使用父类的构造方法

8、 使用时,super()必须放在第一句 3、使用super的注意事项 可以访问直接父类的成员,还可以访问间接父类的成员。 不能访问静态成员,五、super的使用:,六、父类与子类对象的转换,1、子类对象可以被视为其父类的一个对象 Person p=new student(); 2、父类对象不能当作其某一个子类的对象 student p=new Person();,3、形参为父类对象,实参可以是子类对象 4、如果父类对象引用指向的实际是一个子类对象,那么这个父类对象的引用可以强制转换为子类对象的引用。,例:4-3,P82 Person p=new student(); student s=(st

9、udent)p;,3 包,简介: 同名类可能发生冲突 包用来管理类名空间 一般不要求处于同一包中的类具有明确的相互关系 同一包中的类在默认情况下可以互相访问。 一起工作的类放在一个包里,一、package语句,1、Java源程序的第一条语句 2、指明该文件中定义的类所在的包 3、语法: package pkg1.pkg2.pkg3,4、全值类名:pkg1.pkg2.pkg3.classname 5、包与文件系统的目录对应 Package java.awt.image; java/awt/image 包层次的根目录由classpath来确定 6、缺省情况为无名包,包,类,二、import语句,1

10、、需要使用不同包中的类时使用import 2、语法: import pkg1.pkg2.pkgn.classname|*; 一个包中引用多个类可以用*代替 *只代表本层所有类,不包含子层下的类。 2、java.lang包自动被引入 3、包被import 后,使用包中的类时可以直接使用类名 4、包没有被import,则使用时要用全名(包.类),三、编译和运行包中的类,1、编译 在当前目录生成TestPkg.class javac TestPkg.java 在当前目录下生成 pk TestPkg.class javac d . TestPkg.java 编译后的类名为pk.TestPkg,2、运行

11、 java pk.TestPkg(类名) 在CLASSPATH+pk 目录下寻找TestPkg.class 例:4-4,P86,四、Classpath,1、包层次的根目录由classpath来确定 2、运行时可以由-classpath 选项指明 退回到根目录 java classpath d:lessonch04 pk.TestPkg,CLASSPATH,包名,寻找类文件的路径,类文件名,4 访问控制符,目的: 为了更好的控制类及其域、方法的存取权限。 更好的实现封装和隐藏。,一、成员的访问控制符,public:适用于完全公开的成员 private:适用于类中不易公开的成员 protected

12、:半公开性质的成员 无修饰符:包访问控制 例:4-5,P92,二、类的访问控制符 1、public: 该类可以被其它包所访问 2、默认:该类只能被包中的类访问,三、setter与getter,1、封装要求所有的域为private 2、要想访问部分域怎么办? 用setXXX和getXXX来访问,3、优点: 体现封装性 可以利用方法进行合法性检查 可以利用方法进行计算 可以利用方法完成其它必要工作 提供getXXX不提供setXXX,可以保证域只读。,属性: 学号 姓名 专业 方法: 取姓名 取学号 取专业 设置姓名 设置学号 设置专业,其他对象,X,四、构造方法的隐藏,构造方法本来采用默认访问控

13、制符 采用private可以隐藏构造方法 应用:单子设计模式,【例4-9】单子设计模式,5 非访问控制符,一、static,1、类域 静态的、非实例的、类的。 静态域属于类不属于任何具体实例 对于类的任何一个具体对象,静态域是一个公共的存储单元。 可以通过类名直接访问,也可以通过对象来访问。,2、类方法 类方法的本质是该方法是属于整个类的。 类方法中不能操纵对象成员,只能操作类成员。 类方法中不能使用this或super。 可以通过类名直接访问,也可以通过对象来访问。,例:4-6,P93,3、静态初始化器,Static引导的一对括起来的语句组 作用与类的构造方法相似 对类自身进行初始化 不能由

14、程序来调用 不是方法 不能访问实例域和实例方法,二、final修饰符,1、final类 final类不能被继承 一般是用来完成某种标准功能的类 2、final方法: final方法不能被覆盖,3、final域:必须且只能赋值一次,一旦赋值,不能修改 定义时赋值 构造函数中赋值,4、final局部变量:必须且只能赋值一次 定义时赋值 程序块中赋值 5、static final,常量,定义时赋值 例:4-7,三、abstract修饰符,1、abstract类 抽象类:没有具体对象的概念类 所有子类公共属性的集合 不能用new实例化,2、abstract方法 为所有子类定义一个统一的接口 只需声明,

15、不需实现 子类必须实现父类中的abstract方法,否则仍为abstract类 abstract方法必须位于abstract类中 例:4-8,P97 注意:P98,四、其它修饰符,1、Volatile 该域可能被几个线程所控制。对于这种域各线程不能保存它的私有拷贝,而应直接与共享成员变量交互,2、Native 用来声明用其他语言书写的方法,3、Synchronized 主要用于多线程共存的程序中的协调和同步。,6 接口,一、接口的概念,1、与类相似 2、定义了若干个抽象方法和常量,对应于某一组功能 3、可以帮助实现类似于类的多重继承的功能,二、作用: 1、实现不相关类的相同行为 2、可以指明多

16、个类需要实现的方法 3、通过接口可以了解对象的交互界面,而无需了解对象所对应的类 4、接口将方法的定义与它的实现区分开来。 5、一个类可以实现多个接口来达到与多重继承相似的目的。,实现接口,三、接口的定义,语法: 修饰符 interface 接口名extends 父接口名列表 public static final常量域声明; public abstract抽象方法声明; ,可以是多个,例:4-10,P101,四、实现接口,1、implements 某个类为接口中的抽象方法书写语句 2、非抽象类必须实现所有的抽象方法 3、实现方法必须与抽象方法具有完全相同的头 4、使用public 5、一个类可以实现若干个接口 例:4-11,P103,五、对接口的引用 1、

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

最新文档


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

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