第3章 类与对象

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

属性的声明:
[修饰符] 变量的数据类型 变量名[=初始值];
[修饰符] 类名
对象名[=new 类名([参数列表])];
方法的声明:
[修饰符] 返回值类型 方法名(参数列表){
局部变量说明;
方法体; }
举例:TestEmployee
说明:
静态属性变量类型可以是基本类型也可以是引用类型。
返回值可以是简单变量也可以是复合对象,若无返回值,则用void
Protected:保护访问控制符,它修饰的属性和方法比private修饰的有 较大的可见域,可以被同一个包中的其他类,不同包中的子类以及该 类自身访问和引用,主要是为了让子类能够方便地访问父类
Default:只能被同一个包中的其他类访问和引用。 Private:私有访问控制符,经它修饰的属性和方法只能被类自身的方
业等属性的方法。
3.6 类的继承与权限控制
类的继承
Java中使用extends关键字实现类的继承机制,其用法如下: 修饰符 class 子类名 extends 基类名
通过继承,子类自动拥有了基类(父类)的所有成员(成员变量和方法)。 Java只支持单继承,即:一个子类只能继承一个基类,一个基类可以
包的声明语句必须放在程序源文件的开始,表示该文件中声明的全部 类都属于这个包;
也可以在不同的文件中使用相同的包声明语句,这样可以将不同文件 中定义的类都放在同一个包下;
任何一个源文件最多只能有一个包声明语句; 包的名字有层次关系,各层之间以点隔开,包层次必须与Java开发系
统的文件系统结构相同;例如:package htv.kj.jsj—.\htv\jsj\kj 包名全部用小写字母表示。
当必须指出当前使用方法的对象是谁时使用this。 使用this可以处理方法中成员变量和参数重名的情况。 This可以看作是一个变量,它的值是当前对象的引用 使用this可以调用本来其它的构造方法,this (parameter). 举例:Leaf
Super 关键字
Super关键字用来在子类中调用父类的成员变量和方法。 用法:super.属性名、super.方法。
3.4 方法
方法的重载
方法的重载:是指一个类中可以定义多个名称相同,参数不同的 方法,调用时会根据参数个数、形式的不同选择不同的方法。 举例:Sum
方法的参数传递
基本数据类型的变量作为实参传递,并不能改变这个变量的值 方法中的形式参数相当于局部变量,方法调用结束后自行释放,
不会影响到程序中的同名变量。举例:PassValue 对象的引用变量并不是对象本身,而是对象的句柄(名
对象:用计算机语言对问题域中事物的描述,对象通过“属性” 和 “方法”来分别对事物所具有的静态属性和动态属性。
类:是用于描述同一类形的对象的一个抽象的概念,类中定义了这 一类对象所应具有的静态和动态属性。
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
可以通过对象引用或者类名(不需实例化)来调用静态方法。 举例:Cat 网站访问量统计。
3.6 Package和Import
包(Package)
为便于管理大型软件系统中数目众多的类,解决类的命名冲突 的问题,Java引入了包(package)机制,提供类的多重命名空间。
包的命名:Package 包名1[.包名2[.包名3…..]];
对象的引用
类的成员必须在对象实例化后才能被引用,形式为:对象名.成员。 引用对象的变量
✓ Person li=new Person();
=“liming”;
✓ New Person().name=“liming”;
引用对象的方法 对象名.方法名([参数列表]);
举例:Person
3.5 this、super及static关键字
static关键字
在类中,用static声明的成员变量为静态成员变量,它为该类的 共用成员变量,在第一次使用时初始化,对于使用该类的对象 来说,该变量的内存只有一份。
用static声明的方法为静态方法,在调用该方法时,不会将对象 的引用传递给它,所以在static方法中不可以访问非静态成员。 静态方法不再是针对某个对象调用,所以不能访问非静态方法。
Default:默认类,表示该类只能被同一个包中的类访问,而不可以 被其他包中的类访问。即使用import引入,也不可以。
3.6 类的继承与权限控制
属性方法访问控制符
Public:修饰的属性和方法是公共的属性和方法,若类也是public, 则这些属性和方法可以被所有的类访问。由于面向对象设计中的封装 性的要求,公共的属性应尽量减少,可通过公共的方法间接访问。
Import包的引用
import 包名1[.包名2[.包名3…..]].(类名|*); 使用import语句引入某个包中的所有类并不会自动引入其子包中的类。
3.6 Package和Import
新建一个Student类。其中包含: 属性:姓名、年龄、性别、学号、专业、班级 方法:全部属性的构造方法,修改、返回姓名、专
• 盖房子的全部工序封装在施工队这个类的内部
面向对象的主要技术
OOP的主要技术包括:封装、继承、多态、覆盖 封装:一种软件组织方法,其基本思想是把客观世界中联系紧密的元素
和相关操作组织在一起,使其相互关系隐藏在程序体内部,而对外仅仅 表现为与其他封装体之间的接口,从而构造出具有独立含义的软件实现。
可以使用instanceof来判断基类引用所“指向”的是否属于该类或其子 类。
多态(动态绑定)是指Java运行时(非编译时)判断所引用类型的实际类型, 根据其实际类型调用其相应的方法。多态使程序的可扩展性增加到了极 致,增强了程序的灵活性。 动态绑定三个条件: 继承 重写 父类引用指向子类的对象 举例:TestPolymoph1
派生多个子类。举例:Test
类访问控制符
public:公共类,表示它能被其他的任何类访问。一个包中的类相互 可见,可以互相访问,但不在同一个包中的类相互间是不可见的。若 要访问,则需要用import将该类引入,但引入的必须是public类。另 外,含有main( )方法的类必须是公共类。举例:Class11、Class22。
构运算的算法,数据结构和算法均封装在对象中。
对象、数据、方法:
面向对象技术把问题看成是相互作用的事物的集合,用属性描 述事物,对事物的操作叫作方法,事物称为对象,属性称为数据。
对象=数据+方法
3.1 基本概念
举例:我要盖房子
面向过程:
我设计图纸、买材料、盖房、装修…..
面向对象:
✓ 我承包给建筑施工队盖房子,只需提供房屋参数 ✓ 房子怎么盖不关我事
形参表示要传递到方法体内的变量,形参可以有多个,也可为空;形参
可以是简单的数据类型,也可以是复杂数据类型;对于复杂数据类型的
参数对象,传递的是对象在内存中的地址。
构造方法
构造方法是类的一种特殊方法,java中每个类都有构造 函数,它的功能是为类的对象定义初始化状态。 构造方法与类同名,且没有返回值 New+构造方法,声明一个类的对象 若在类中没有提供构造方法,则使用默认的构造方法,默
法访问和使用,它对属性和方法进行了最高级别的保护。多数用来修 饰属性,其他类需通过该类中的公共方法来访问这些属性。这些公共 的方法为这些属性提供了一个统一的接口,体现了面向对象思想。
3.6 类的继承与权限控制
举例:TestAccess、TestAccess1
方法的重写
在子类中可以根据需要对从父类继承过来的方法重写。 重写方法必须与被重写的方法具有相同的名字、参数列表和返回类型。 重写方法不能使用比被重写方法更严格的访问控制符。 举例:TestOverwrite
认的构造函数没有参数; 同一个类中可以有多个构造函数,名称相同,而参数不同,
它们以参数的个数和类型不同来区分。 定义了有参构造方法后,默认的构造方法失效,如要使用
无参构造方法时,必须自己重新定义 举例:TestPerson
3.3 对象
对象的实例化
类型 对象名=new 类型([参数列表]);
造函数,如果调用super方法,必须放在子类构造方法的第一行。 如果子类没有明确的调用父类的构造函数,编译器会自动的调用
super()语句,它调用父类的默认构造函数。 如果子类构造方法没有显示调用基类构造方法,而基类中又没有默认
构造方法,则编译出错。
举例:TestSuperSub
抽象类
用abstract关键字来声明一个类时,这个类叫作 抽象类。用abstract关键字来修饰一个方法时, 该方法称为抽象方法。
3.6 类的继承与权限控制
Super关键字
调用父类的构造方法: super ([paramlist]) 调用父类方法 : super.Method ([paramlist])
继承中的构造方法
子类在构造过程中必须调用基类的构造方法。 子类可以在自己的构造方法中使用super(paramlist])调用父类的构
个对象可以有多个句柄。举例:PassRef
举例:TestBirthday
3.4 方法
3.4 方法
3.4 方法
3.4 方法
3.4 方法
3.4 方法
3.4 方法
3.4 方法
3.4 方法
3.4 方法
3.5 this、super及static关键字
this关键字
在类的方法定义中使用的this关键字代表使用该方法的对象的引 用。
3.1 基本概念
继承:将一个已有类中的属性和方法保留,加上自己特有的属 性和方法,形成一个新类的技术。分别称为父类、子类。
多态:是指一个程序中同名的不同方法共存的情况。通过方法 重写,一个类可以具有多个相同名字的方法,由参数个数和类 型对它们加以区分。通过方法覆盖,子类可以重新实现父类的 某些方法,使其具有自己的特征。
第3章 类与对象
3.1 基本概念
面向对象编程概念
面向对象编程(OOP) 是目前占主流地位的一种程序设计方 式,取代了先前的所谓结构化、面向过程的编程技术。 面向过程:是设计一组函数来解决一个问题,即先解决算法,再
解决使计算更容易的数据结构; 面向对象:与面向过程相反,即先解决数据结构,再解决数据结
含有抽象方法的类必须被声明为抽象类,抽象类 必须被继承,抽象方法必须被重写。
抽象类不能被实例化。 抽象方法只须声明,无须实现。用;结束。
3.7 类的多态
动态转型
子类对象可以当作基类对象来使用(向上转型),反之,向下转型。
一个基类引用类型变量可以“指向”子类的对象。
一个基类的引用不可以访问子类新增加的成员。举例:TestPolymoph
✓ 类的封装性:使得代码的可重用性大为提高。使用者不用知道 实现的细节,只需要用设计者提供的消息来访问该对象(公共 的方法)
✓ 类的继承性使子类继承了父类的性质,利用了代码的可重用性, 减少了程序中的冗余信息。
✓ 类的多态性:提供了一种机制,使得你可以在运行时为你所需要 的功能提供不同的实现,提高系统的灵活性和扩展性 。
3.2 类
类的定义
格式:修饰符 class 类名 [extends 父类名] [implements 接口名]{ 类属性声明; 类方法声明; }
说明: (1)class表示类定义开始,类名第一个字母通常大写 (2)修饰符用来说明类的特殊性质,分为访问控制符和类型说明 符,访问控制符用来说明类能被哪些对象引用(public),类型说 明符有abstract和final,表示抽象类和最终类。 (3)关键字extends表示继承,后面跟一个父类名 (4)关键字implements表示该类实现了接口,一个类可以实现多 个接口,接口使得类可以实现多重继承。
3.6 Package和Import
包的编译与运行
以Person为例进行讲解。
javac –d .
包的引用

统一个包中的类相互访问,不需指明包名,直接使用便可。
以Class1、Class2为例进行讲解。

不同包中的类相互访问时,需使用类的完整路径。
以Class11、Class22为例进行讲解。

不同包中的类相互访问,可通过import引入包中的类。
相关文档
最新文档