java 第03章 面向对象技术

合集下载

JAVA各章知识总结

JAVA各章知识总结

Java语言是面向对象技术成功应用的典范。

诞生于1955年的Java语言在短短的几年间便席卷全球,以20世纪末网络科技和网络经济所特有的令人瞠目结舌的速度迅速发展,是21世纪开发信息系统的主流技术。

由于Java语言所具有的简洁性、纯属面向对象等特征,也使得它非常适合于在大学中面向对象程序设计的教学。

本学期我们开设了《Java语言与面向对象程序设计》这门课,通过对Java 一段时间的自学,我想在此谈谈我自己摸索学习Java的心得体会。

学习Java切忌浮躁,要注意以下几点:1.欲速则不达,初学者请不要被新技术迷惑,先把基础学扎实。

2.要扎扎实实,一步一个脚印的逐步学习,不要想着一步登天。

给自己定一个学习流程,按照流程学习。

3.多查API,它是Java编程的基本方法,也是编程过程中所不断利用的资源。

Java的学习过程不仅仅是基本语法的学习,更多的是去学习和掌握它所提供的API类库。

对于所接触到的类,方法,都去仔细去阅读文档的说明,再用自己编写的实例去比较一下。

4.看再多的书是学不全脚本的,要多实践,学习脚本最好的方法之一就是多练习;不要只看不练,一定要把书上的例子亲手敲到电脑上实践,千万不要照抄,更不要复制粘贴;看得懂代码,不代表会写代码。

学编程语言不仅仅是从理论上的学习,更重要的是要利用这门语言为你的思想服务。

理解这门语言是首要的,但是要达到心领神会、融会贯通就必须勤动手,多去时间,多编一些例子。

计算机科学是注重实践的学科,成功的软件开发人员无不经过大量的上机锻炼,只有理论和实践相结合才能真正掌握只是和技能。

5.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;书读百遍,其义自现。

第一遍书看不懂就看第二遍、第三遍。

6.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工作。

7.遇到问题,先自己想办法解决,查查文档,不要什么都不看就发帖子问。

第3章:面向对象编程基础

第3章:面向对象编程基础

3.2 Java的类和对象
(2) 成员变量
成员变量定义的一般形式如下: [修饰字] 类型 变量名; 其中,修饰字可以空缺,修饰字用于对成员变量限制其访问权限,成员 的访问权限有4种:private、protected、public 和友好的(后面详细 介绍)。 变量的类型可以是任何数据类型,变量的名字是一个标识符。Java 中成 员变量的名字可以与类的方法的名字相同。 成员变量对类内定义的方法都有效。类的方法也可定义变量,这种变量 称为局部变量,局部变量只在定义它的方法中有效。
3.1 面向对象的基本概念
3. 消息(方法调用的信息)
对象之间的交互通过相互发送消息(Message )实现。 当对象A希望对象B执行B的一个方法时,用 对象A发送消息给对象B来实现。 消息发送时,如果还需要其他参数,消息可带 参数一起发送。
3.1 面向对象的基本概念
4. 类(对象的类属/类别)
程序设计中利用抽象,在面向过程阶段,系统按函数和 模块进行设计。 在面向对象阶段,利用抽象按类设计。类是目前支持抽 象的最好工具。
3.1 面向对象的基本概念
2. 对象: (万物皆为对象)
对象有状态(属性)、行为(操作)和名称( 对象名) 对象的名称用于程序引用对象,对象的成员变 量,用于存储对象的状态信息,对象的方法用 于描述对象的行为
练习题
【真题练习】参照以下Java代码,以下四个叙述中最确 切的是( )
class A{ int x; static int y; void fac(String s){ Syatem. out. println("字符串:"+s); } } A.x、y和s都是成员变量 B.x是实例变量、y是类变量、s是局部变量 C.x和y是实例变量、s是参数 D.x、y和s都是实例变量

java面向对象总结(一)

java面向对象总结(一)

java⾯向对象总结(⼀)1. 对象的概念及⾯向对象的三个基本特征⾯向对象的三⼤核⼼特性⾯向对象开发模式更有利于⼈们开拓思维,在具体的开发过程中便于程序的划分,⽅便程序员分⼯合作,提⾼开发效率。

⾯向对象程序设计有以下优点。

1. 可重⽤性:它是⾯向对象软件开发的核⼼思路,提⾼了开发效率。

⾯向对象程序设计的抽象、继承、封装和多态四⼤特点都围绕这个核⼼。

2. 可扩展性:它使⾯向对象设计脱离了基于模块的设计,便于软件的修改。

3. 可管理性:能够将功能与数据结合,⽅便管理。

该开发模式之所以使程序设计更加完善和强⼤,主要是因为⾯向对象具有继承、封装和多态 3 个核⼼特性。

继承性如同⽣活中的⼦⼥继承⽗母拥有的所有财产,程序中的继承性是指⼦类拥有⽗类数据结构的⽅法和机制,这是类之间的⼀种关系;继承只能是单继承。

例如定义⼀个语⽂⽼师类和数学⽼师类,如果不采⽤继承⽅式,那么两个类中需要定义的属性和⽅法.语⽂⽼师类和数学⽼师类中的许多属性和⽅法相同,这些相同的属性和⽅法可以提取出来放在⼀个⽗类中,这个⽗类⽤于被语⽂⽼师类和数学⽼师类继承。

当然⽗类还可以继承别的类,学校主要⼈员是⼀个⼤的类别,⽼师和学⽣是学校主要⼈员的两个⼦类,⽽⽼师⼜可以分为语⽂⽼师和数学⽼师两个⼦类,学⽣也可以分为班长和组长两个⼦类。

使⽤这种层次形的分类⽅式,是为了将多个类的通⽤属性和⽅法提取出来,放在它们的⽗类中,然后只需要在⼦类中各⾃定义⾃⼰独有的属性和⽅法,并以继承的形式在⽗类中获取它们的通⽤属性和⽅法即可。

封装性封装是将代码及其处理的数据绑定在⼀起的⼀种编程机制,该机制保证了程序和数据都不受外部⼲扰且不被误⽤。

封装的⽬的在于保护信息,使⽤它的主要优点如下。

保护类中的信息,它可以阻⽌在外部定义的代码随意访问内部代码和数据。

隐藏细节信息,⼀些不需要程序员修改和使⽤的信息,⽐如取款机中的键盘,⽤户只需要知道按哪个键实现什么操作就可以,⾄于它内部是如何运⾏的,⽤户不需要知道。

JAVA面向对象总结心得(精选3篇)

JAVA面向对象总结心得(精选3篇)

JA V A面向对象总结心得(精选3篇)JAVA面向对象总结心得第1篇当子类需要父类的功能,而子类有新的内容,可以重写父类中的方法。

在实际开发过程中,随着代码量的逐渐增加,维护成了一个很大的问题,如果需要对某个方法进行修改,其本身代码以及其子类代码都会受到影响,而重写则很好的解决了这个问题。

方法重写又称为方法覆盖、方法复写。

方法签名 = 方法名 + 参数(顺序+类型+个数)当父类和子类的方法签名一致时,我们认为子类重写了父类的方法子类要重写的方法,方法的权限修饰符不能比父类更低(public 、protected 、default 、private 权限依次增加)父类私有的方法,子类不能进行方法重写方法重写:子类和父类中方法相同,两个类之间的关系,函数的返回值类型、函数名、参数列表都一样,当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法重写发生在运行期,是子类对父类的允许访问的方法的实现过程进行重新编写。

返回值类型、方法名、参数列表必须相同,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。

构造方法无法被重写方法重载:指在同一个类中,多个方法名相同,他们的参数列表不同(个数不同,数据类型不同),同样的一个方法能够根据输入数据的不同,做出不同的处理方法的重写要遵循“两同两小一大”“两同”即方法名相同、形参列表相同;“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。

关于重写的返回值类型这里需要额外多说明一下,上面的表述不太清晰准确:如果方法的返回类型是 void 和基本数据类型,则返回值重写时不可修改。

但是如果方法的返回值是引用类型,重写时是可以返回该引用类型的子类的。

JAVA面向对象总结心得第2篇封装封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。

但是可以提供一些可以被外界访问的方法来操作属性。

Java开发技术大全第三章

Java开发技术大全第三章

第3章对象和类在当今的计算机大型应用软件开发领域,面向对象技术正在逐步取代面向过程的程序设计技术。

本章将介绍面向对象的基本知识和Java实现面向对象程序设计的主要工具--类。

如果读者缺乏关于面向对象程序设计的背景,一定要仔细地阅读本章。

如果读者有C++编程经验,也要注意二者之间的区别,毕竟Java在类的具体实现上与C++有较大的差别。

3.1 面向对象的基本概念面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。

面向对象的概念和应用已超越了程序设计和软件开发,扩展到很广的范围。

例如,数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。

谈到面向对象,这方面的文章非常多。

但是,明确地给出"面向对象"的定义却非常少。

最初,"面向对象"是专指在程序设计中采用封装、继承、抽象等设计方法。

可是,这个定义显然不能再适合现在的情况。

面向对象的思想已经涉及到软件开发的各个方面。

例如,面向对象的分析(Object Oriented Analysis,OOA),面向对象的设计(Object Oriented Design,OOD)以及经常说的面向对象的编程(Object Oriented Programming,OOP)。

许多有关面向对象的文章,都只是讲述在面向对象的开发中所需要注意的问题,或所采用的比较好的设计方法。

看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地收获知识。

说明:在本章中,着重讨论OOP,有关OOA和OOD请读者查阅有关软件工程的书籍。

OOP从所处理的数据入手,以数据为中心而不是以服务(功能)为中心来描述系统。

它把编程问题视为一个数据集合,因为数据相对于功能而言,具有更强的稳定性。

OOP同结构化程序设计相比最大的区别就在于:前者首先关心的是所要处理的数据,而后者首先关心的是功能。

网络程序设计(java)第03章 面向对象程序设计new

网络程序设计(java)第03章 面向对象程序设计new


• 类(class)本身也是一种对象 • 类(class)同时也是实例对象的模板 • 类(class) 的基本组成:(成员)域和(成员)方 法 • 每个对象:拥有内存存储成员域/方法
– 静态的成员域/方法属于类 – 其它成员域/方法属于实例对象
2013-7-31 8
类的定义
• 类的定义格式如下:
2013-7-31 18
实例化对象
前面讲过,类是创建对象的模板.当使用一个类创建了一 个对象时,我们也说我们给出了这个类的一个实例。通常的格 式为: 类的名称 对象的名字=new 类的名称([parameterList]); 创建一个对象包括对象的声明、为对象分配内存空间和赋 初值三个步骤。 1、对象的声明格式为: 类的名字 对象名字; 如 People zhangPing; 或 People zhangPing ,LiYong; 这里People 是一个类的名字,zhangPing是我们声明的对象的 名字.
2013-7-31 1
面向对象程序设计整体介绍
• 传统的程序设计风格存在着数据抽象简单、信息完全暴露、 算法复杂、无法很好地描述客观世界等缺点,可重用性差, 如果软件项目庞大,程序的调试和维护将变得异常困难。 • 面向对象的基本思路:首先分析问题并建立相应的对象, 然后通过这些对象以及它们之间的配合解决问题,是模拟 现实生活求解的一般过程。
float getArea(){ // 方法 return radius*radius*PI; }
//内部访问变量
}
成员域的使用
如果从类的外部访问,类变量和类实例变量的使用方法是不同。 访问类变量的格式如下: 类名.类变量名 例如我们可以采用下面形式访问上例中的静态变量color的: Circle.color,由此可见,访问类变量与类的对象构造和对象都无 关。类变量名必须用static修饰。 访问实例变量的格式如下: 对象名.实例变量名 例如 Circle c1=new Circle(); //c1是对象名 System.out.println(“area=”+c1.area); //(不能是Circle.area) System.out.println(“Color=”+Circle.color);

(完整word版)Java学习笔记(必看经典)

诚信、创新、开放、合作JAVA的面向对象编程--------课堂笔记面向对象主要针对面向过程。

面向过程的基本单元是函数。

什么是对象:EVERYTHING IS OBJECT(万物皆对象)所有的事物都有两个方面:有什么(属性):用来描述对象。

能够做什么(方法):告诉外界对象有那些功能。

后者以前者为基础。

大的对象的属性也可以是一个对象。

为什么要使用面向对象:首先,面向对象符合人类看待事物的一般规律。

对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节。

方法的定义非常重要。

方法有参数,也可能有返回值。

注意区分:对象(本身)、对象的实现者、对象的调用者。

分析对象主要从方法开始。

我们通过类来看待对象,类是对象的抽象。

其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。

对象之间的耦合性一定要低(比如不同硬盘和不同主板之间的关系)。

这样才能使每个对象本身做成最好的。

对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。

实现高内聚就是要最大限度低提高复用性(复用性好是因为高内聚)。

可复用性是OOP的基础。

比较面向过程的思想和面向对象的思想:面向过程的思想:由过程、步骤、函数组成,以过程为核心;面向对象的思想:以对象为中心,先开发类,得到对象,通过对象之间相互通信实现功能。

面向过程是先有算法,后有数据结构。

面向对象是先有数据结构,然后再有算法。

在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。

开发过程是用对个简单的对象的多个简单的方法,来实现复杂的功能。

从语法上来看,一个类是一个新的数据类型。

在面向对象编程中,除了简单数据类型,就是对象类型。

定义类的格式:class Student{代码}注意类名中单词的首字母大写。

实例变量:定义在类中但在任何方法之外。

(New出来的均有初值)局部变量:定义在方法之中的变量。

局部变量要先赋值,再进行运算,而实例变量均已经赋初值。

这是局部变量和实例变量的一大区别。

Java面向对象的三大特性

Java面向对象的三大特性Java面向对象的三大特性Java面向对象的三大特性分别为:封装、继承、多态,下面我们一起来详细了解一下!1.封装:说得通俗一点,就是把细节隐藏起来,把该公开的公开,把该私有的私有。

那如何封装一个类?类中含属性和方法,属性可有可无,并且应该设置为private.方法可有可无,对外的方法的应该公开,对内的方法应该私有.一个类的方法,大致有:构造方法 -> 可以生成存/取属性值的方法,也就是 getter/setter 属性方法. -> 可以生成业务方法,实现此类对象的真正业务功能,是程序员真正需要花心思考虑的。

针对类中的方法,有以下两种封装策略:1).把存/取属性方法、构造方法、业务方法全部封装到同个类中。

2).把业务方法单独独立出来,形成一个业务类,这个类用来操作与它所相关的实体对象。

它一般由接口与实现类组成.实体(Entity)对象,就是指含业务属性和属性存/取方法的对象.如:封装策略一:public class Account {private long id;private String name;private double balance;private String pwd;....// getter/setter方法// 构造方法....// 业务方法public void withdraw(double money) {if(balance < money) {System.out.println("余额不足");return ;}balance -= money;}public void deposit(double money) { }}//采用封装策略二:首先是实体类public class Account {private long id;private String name;private double balance;private String pwd;....// getter/setter方法// 构造方法}//再定义一个业务类,操作Accountpublic class AccountService {// 业务方法public void withdraw(Account a,double money) { if(a.getBalance() < money) {System.out.println("余额不足");return ;}a.setBalance(a.getBalance - money);}public void deposit(Account a, double money) { }}注:此处在真实的场景中应该由接口与实现类组成。

Java基础知识总结(超详细整理)

Java基础知识总结(超详细整理)Java语⾔的特点1.⾯向对象⾯向对象(OOP)就是Java语⾔的基础,也是Java语⾔的重要特性。

⾯向对象的概念:⽣活中的⼀切事物都可以被称之为对象,⽣活中随处可见的事物就是⼀个对象,我们可以将这些事物的状态特征(属性)以及⾏为特征(⽅法)提取并出来,并以固定的形式表⽰。

2.简单好⽤Java语⾔是由C和C++演变⽽来的,它省略了C语⾔中所有的难以理解、容易混淆的特性(⽐如指针),变得更加严谨、简洁、易使⽤。

3.健壮性Java的安全检查机制,将许多程序中的错误扼杀在摇蓝之中。

另外,在Java语⾔中还具备了许多保证程序稳定、健壮的特性(强类型机制、异常处理、垃圾的⾃动收集等),有效地减少了错误,使得Java应⽤程序更加健壮。

4.安全性Java通常被⽤在⽹络环境中,为此,Java提供了⼀个安全机制以防恶意代码的攻击,从⽽可以提⾼系统的安全性。

5.平台⽆关性Java平台⽆关性由Java 虚拟机实现,Java软件可以不受计算机硬件和操作系统的约束⽽在任意计算机环境下正常运⾏。

6.⽀持多线程在C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持。

多线程机制使应⽤程序在同⼀时间并⾏执⾏多项任务,该机制使得程序能够具有更好的交互性、实时性。

7.分布式(⽀持⽹络编程)Java语⾔具有强⼤的、易于使⽤的⽹络能⼒,⾮常适合开发分布式计算的程序。

java中提供了⽹络应⽤编程接⼝(),使得我们可以通过URL、Socket等远程访问对象。

8.编译与解释共存Java语法基础标识符: ⽤来标识类名、对象名、变量名、⽅法名、类型名、数组名、⽂件名的有效字符序列。

合法的标识符:由字母、数字、下划线“_”、美元符号“$”或者“¥”组成,并且⾸字符不能是数字。

不能把java关键字和保留字作为标识符。

标识符对⼤⼩写敏感。

关键字:Java语⾔中已经赋予了特定含义的保留字: const、goto,Java版本中尚未使⽤,但以后版本可能会作为关键字使⽤变量:程序运⾏期间可以被改变的量。

(2024年)《Java面向对象程序设计》教案

2
01
课程介绍与目标
2024/3/26
3
Java语言概述
2024/3/26
Java语言的历史与发展
01
介绍Java语言的起源、发展历程以及在不同领域的应用。
Java语言的特点与优势
02
阐述Java语言跨平台、面向对象、安全性等特点,以及其在软
件开发中的优势。
Java语言的核心技术
03
简要介绍Java语言的核心技术,如JVM、Java类库、Java API
接口是一种特殊的类,它只包含方法的声明,不包含方法的实现。
抽象类的定义
抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类中 可以包含抽象方法和非抽象方法。
接口与抽象类的区别
接口只能包含方法的声明,而抽象类可以包含方法的声明和实现; 接口可以被多继承,而抽象类只能被单继承。
16
内部类与匿名内部类
关键字
Java语言中预定义的、有特殊含义的单词,不能作为标识符使用 。
数据类型
Java中的数据类型分为基本数据类型和引用数据类型,基本数据 类型包括整型、浮点型、字符型和布尔型。
2024/3/26
9
运算符与表达式
运算符
用于进行各种运算的符号,如算术运算符、关系运算符、逻辑运算符等。
表达式
由运算符和操作数组成的算式,用于计算并返回结果。
提供了操作日历字段(如年、月、日、时、分、秒)的方 法,可以获取和设置日期时间。
两者比较
Date类主要用于表示日期时间,而Calendar类则提供了 更丰富的日期时间操作方法,如计算两个日期之间的差值 、设置时区等。
20
集合框架类库
Java集合框架主要包括接口(如 Collection、List、Set、Queue、 Deque等)和实现类(如ArrayList、 LinkedList、HashSet、TreeSet等) 。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0 0 0
a 0x01234567
year 2002 month 4 day 18 (3) a.setdate(2002,4,18)
图3.1 对象创建与初始化
补充:对象的比较
对象间的比较有两种方式:
==运算符
用于比较两个变量的值是否相等。
equals()方法
用于比较两个对象的内容是否一致。
补充:对象的比较
3.3 对象的创建
一个对象的生命周期是: 创建→使用→销毁。 3.3.1 创建对象 3.3.2 对象的使用 3.3.3 对象的初始化 3.3.4 对象的销毁
3.3.1 创建对象
声明对象:〈类名〉 〈对象名〉
Date1 a;
实例化对象:new运算符用来创建新的对象, new 并为之分配内存。
a=new Date1();
补充:参数传递原则
引用数据类型的参数传递—传递的是对象的 引用。
class PassRef { int x; public static void main(String[] args) { PassRef obj = new PassRef(); obj.x = 5; change(obj); System.out.println("obj.x="+obj.x); } public static void change(PassRef obj) {
例如:
public class Date1
3.2.2 类主体
包含类主体的类结构如下:
〈类声明〉 { 〈成员变量的声明〉 〈成员方法的声明及实现〉 }
1. 声明成员变量
Java类的状态用成员变量来表示。声明格式 [〈修饰符〉] [static] [final] [transient] 〈变量类型〉 〈变量名〉; 例如,
2. 构造方法
构造方法的特征:
在实例化对象的时候由new运算符自动调用,主 要用来对成员变量进行初始化值。 一个类中可以有多个具有不同参数列表的构造方 法,称为构造方法的重载,通过重载构造方法可以 完成不同初始化的操作。 构造方法能声明成私 ? 有的吗?即可以用
private来声明构造方法 吗?
例3.2 使用构造方法为日期赋初值

调用对象的方法,这样的对象称为匿名 对象。 使用匿名对象的两种情况:
如果对一个对象只需要进行一次方法调用, 那么就可以使用匿名对象。 将匿名对象作为实参传递给一个函数调用。
补充:参数传递原则
基本数据类型的参数传递原则:单向值传递
class PassValue { public static void main(String[] args) { int x = 5; change(x); System.out.println("x="+x); } public static void change(int x) { x=3; } }
表3.1 Java各类型变量的初始化。而这种自动初始 化是通过使用构造方法(Constructor)来实现的。 构造方法的特征:
具有与类相同的名称。 没有返回值,不能在构造方法中用return语句返回值。 定义构造方法时不能加void修饰符。 每个类里都至少有一个构造方法,如果没有进行显式定义 的话,系统会自动为该类产生一个默认的没有参数,没有 代码的构造函数(如例3.1) 。但是一旦显式定义了构造 方法,系统就不再提供默认的构造方法了。
权限修饰符 公有的(public) 保护的(protected) 默认的 私有的(private) 同一类 同一包 不同包的子类 所有类
2. 设置类的访问权限
在声明一个类时,可以不用权限修饰符, 也可以用public设置类为公有的,不允 许使用其他的权限修饰符。如:
public class Date1 //公有的类 // class Date1 //非公有的类 private class Date2 //非法 一个源程序文件中可以声明多个类, 一个源程序文件中可以声明多个类,但用 public修饰的类只能有一个, 修饰的类只能有一个 public修饰的类只能有一个,且该类名必须 与文件名相同。 与文件名相同。
3.3.4 对象的销毁
Java的垃圾回收机制自动判断对象是否在使用, 并能够自动销毁不再使用的对象(垃圾),收回 对象所占的资源。 垃圾判断准则:
是否有引用句柄(栈内存)指向该对象(存在于堆内存 中),如果没有,则该对象变成垃圾。
析构方法finalize()是在对象被当成垃圾从内存中 析构方法 释放前调用,而不是在对象变成垃圾前调用,垃 圾回收器的启用不由程序员控制,所以无法保证 每个对象的finalize() 方法都会被调用。 一个类只能有一个finalize(),且不能重载。
day = day+1; } } //算法不全
3. 方法体
方法的主体称为方法体,它是成员 方法的实现部分。 在方法体中也可以声明变量,但方 法中声明的变量只是属于方法的局 局 部变量,而不是类的成员变量。 部变量
例3.1 声明日期类
public class Date1 //类声明 { int year,month,day; //成员变量,表示年、月、日 void setdate(int y,int m,int d) //成员方法,设置日期值 { //公有的,无返回值,有三个参数 year = y; month = m; day = d; } boolean isleapyear() //判断年份是否为闰年 { //布尔型返回值,无参数 return (year%400==0) | (year%100!=0) & (year%4==0); } void print() //输出日期值,无返回值,无参数 {
public class Date1 { int year,month,day; } //类声明 //成员变量
2. 声明成员方法
类的行为由它的方法实现,声明成员方法的格 式为: [〈修饰符〉] 〈返回值类型〉 〈方法名〉 public class Date1 //类声明 ([〈参数列表〉]) [throws 〈异常类〉] { { int year,month,day; //成员变量 public void tomorrow() 〈方法体〉 } {
声明对象的同时实例化对象
〈类名〉 〈对象名〉=new 〈类名〉 ([〈参数列表〉])
Date1 a=new Date1();
3.3.2 对象的使用
引用成员变量
〈对象名〉.〈变量名〉 a.year=2003;
调用成员方法
〈对象名〉.〈方法名〉
a
null
a 0x01234567
(1) Date1 a
year month day (2) a = new Date1()
第3章 面向对象技术
• • • • • • • 3.1 3.2 3.3 3.4 3.5 3.6 3.7 类和对象 类的创建 对象的创建 类的封装 类的继承 类的多态性 递归方法
3.1 类和对象
汽车设计图 类是某一类事物的描述,是抽象的、概 念上的定义。 对象是实际存在的该类事物的个体,又 称为实例。

3.1 类和对象
类(Class)是一种复杂的数据类型,它是将数据和与 数据相关的操作封装在一起的集合体。类是普通数据 类型的扩展,它不但包含数据,还包含了对数据进行 操作的方法(method)。方法反映的是数据的行为而 不是数据本身。 对象(Object)是类的实例(instance),它是类的变 对象 量。当程序运行时,对象占用内存单元。对象与类的 关系就像变量与类型的关系一样。类与对象是密切相 关的,没有脱离对象的类,也没有不依赖于类的对象。 类中的数据称为成员变量,对数据进行的操作称为成 类中的数据称为成员变量,对数据进行的操作称为成 成员变量 员方法。 员方法。
3.3.3 对象的初始化
1.系统对变量的初始化 2. 构造方法
1.系统对变量的初始化
变量在声明时,如果没有赋初值,使用时就没有值,将 产生编译错误。 实例化对象时,系统会对成员变量进行默认的初始化:
类型 byte short int long 引用类型 初值 0 0 0 0 null 类型 float double char boolean 初值 0.0f 0.0 ‘\u0000’ false
3.4 类的封装
3.4.1 什么是封装? 3.4.2 如何封装 3.4.3 实例成员与类成员
3.4.1 什么是封装(信息隐藏)?
封装(encapsulation)的含义是:类的设计者 封装 把类设计成一个黑匣子,使用者只能看见类中 定义的公共方法,而看不见方法的实现细节, 也不能直接对类中的数据进行操作。 封装的目的有:
class Compare { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); String str3 = str1; //用==运算符进行比较 if (str1 == str2) System.out.println("str1==str2"); else System.out.println("str1!=str2"); if (str1 == str3) System.out.println("str1==str3");
3.2 类的创建
Java类的定义格式分为两部分:类 声明和类主体。格式如下:
〈类声明〉 { 〈类主体〉 }
3.2.1 类的声明
类声明中包括关键字class、类名及类的 属性。类声明的格式如下:
[〈修饰符〉] class 〈类名〉 [extends 〈超类名〉] [implements〈接口名〉]
相关文档
最新文档