第三章 面向对象编程

合集下载

第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都是实例变量

计算机编程入门课程大纲

计算机编程入门课程大纲

计算机编程入门课程大纲第一章:课程介绍本章将对计算机编程入门课程进行详细介绍,包括课程目标、学习方法、教学资源等内容,让学生对本门课程有初步了解。

第二章:编程基础本章将介绍编程的基础知识,包括编程语言、变量与数据类型、基本运算符、条件语句、循环语句等内容。

通过实例演示和练习,帮助学生掌握编程的基本概念和技能。

第三章:面向对象编程本章将介绍面向对象编程的概念和方法,包括类、对象、封装、继承、多态等内容。

通过实例分析和实践,让学生理解面向对象编程的思想,并能够运用到实际的编程中。

第四章:数据结构与算法本章将介绍常用的数据结构和算法,包括数组、链表、栈、队列、递归、排序算法等内容。

通过理论讲解和实际操作,培养学生对数据结构和算法的理解和运用能力。

第五章:图形化编程本章将介绍图形化编程的基本原理和应用,包括图形界面设计、事件处理、图形绘制等内容。

通过实例演示和实践,让学生了解图形化编程的特点,并能够进行简单的图形界面设计和开发。

第六章:网络编程本章将介绍网络编程的基本概念和技术,包括网络通信协议、Socket编程、HTTP通信等内容。

通过实例分析和实践,帮助学生理解网络编程的原理,并能够进行简单的网络应用开发。

第七章:软件工程与代码管理本章将介绍软件工程的基本概念和方法,包括需求分析、设计原则、代码管理工具等内容。

通过案例分析和实际操作,培养学生对软件开发过程的理解和掌握。

第八章:实践项目本章将组织学生进行实践项目,结合前面所学知识,完成一个简单的软件开发项目。

通过实践项目,让学生综合运用所学的编程知识和技巧,提高解决问题的能力和实践能力。

第九章:课程总结与展望本章将对整个课程进行总结回顾,并展望学习计算机编程的未来发展方向。

同时,为学生提供学习资源和拓展学习的建议。

结语本课程旨在帮助学生入门计算机编程,培养编程思维和解决问题的能力。

通过系统学习和实践项目,学生将能够掌握基本的编程知识和技能,为今后进一步深入学习和应用计算机编程打下基础。

Java程序设计基础与实战-教学大纲(45学时)

Java程序设计基础与实战-教学大纲(45学时)

《Java语言程序设计》(第三版)课程教学大纲学分:3学分学时:45学时(其中:讲课学时:30上机学时:15 )适用专业:通识选修课、专业拓展课一、课程的性质与目标《Java语言程序设计》的可作为一门计算机科学与技术的普及课、入门课,用作专业拓展课或非计算机专业的通识选修课。

通过本课程的学习,学生能够了解Java语言特征、常用的Java类库以及面向对象程序设计思想,并理解计算机软件和计算机系统的工作原理和方式,提高对计算机科学与技术的兴趣,促进学生能在未来的学习和工作中,使用“计算机思维”来解决实际问题,全面提高学生的综合素质。

二、课程设计理念与思路课程设计理念:高等职业教育不仅注重对专业知识和技能的传授,也注重对学生综合素质的培养,不局限于个人选择的专业,有助于个人潜力能够得到最大限度的发挥。

在全球云计算和移动互联的产业背景下,在高等教育的通识教育中增加有关计算机技术基础知识与能力的课程,有助于非计算机专业大学生综合素质的提高。

课程设计思路:Java语言程序设计作为一门选修课,让学生把一门程序设计语言掌握到实用的程度较有难度。

本课程并非介绍Java标准版的所有内容,而是通过Java语言深入理解程序设计的精髓,大局部知识点是适用于所有编程的基础知识,如变量、运算符、流程控制语句和10等。

潜移默化地培养学生程序化、系统化的思维模式,让学生能够使用抽象思维分类解决问题。

同时,培养学生的自学能力。

软件技术的开展日新月异,教材不能做到和语言同步,互联网的存在为自学掌握一门技能提供了便捷,可以让学生自己分析问题、动手编程和,在此过程中,学生上网查阅相关资料,能够更新知识,并逐渐具备独立研究的能力。

三、教学条件要求操作系统:Windows 10五、学时分配注:可选章节未计入合计课时。

六、考核模式与成绩评定方法本课程为考试课程,期末考试采用百分制的闭卷考试模式。

学生的考试成绩由平时成绩(30%)和期末考试(70%)组成,其中,平时成绩包括出勤(5%)、作业(5%)、实验和上机成绩(20%)。

自考Java语言程序设计复习资料

自考Java语言程序设计复习资料

语言程序设计(一)考试复习资料第一章JA V A语言基础一、出题点:1.JA V A语言的特点:强类型、编译和解释、自动无用内存回收功能、面向对象、与平台无关、安全性、分布式计算、多线程。

(P3)2.小应用程序与应用程序的区别(P5)(1)小应用程序只能在与JA V A兼容的容器中运行,可以嵌入在HTML网页内,在网络上发布,当网页被浏览时,在浏览器中运行。

小应用程序的运行还受到严格的安全限制。

而JA V A应用程序没有这些限制,也不支持网页嵌入和下载运行。

(2)两者在代码编写上也有很大差异。

一个小应用程序必须定义成一个Applet类的子类,应用程序可以是Applet类的子类,也可以不是。

(3)应用程序必须在一个类中定义一个main()方法,该方法代表应用程序的入口。

而小应用程序不必定义main()方法。

它的执行由Applet类中定义的多个方法控制。

3.JA V A应用程序的开过过程(P6)(1)JA V A应用程序,先编写JA V A源程序,源程序经JA V A编译器编译后产生字节码文件,最后由JA V A解释器解释执行字节码文件。

(2)小应用程序,先编写源程序,然后经JA V A编译器编译后产生字节码文件,最后由WEB浏览器解释执行字节码文件。

4.标识符:由字母和数字符组成,限定标识符第一个字符不能是数字符。

(P8)5.关键字:均由小写字母组成,关键字不可以用做变量、方法、类或标号的标识符。

(P8)6.基本数据类型:整数类型、浮点数类型、字符类型、逻辑类型。

非基本数据类型:数组、字符串、类、接口(P8)7.整数类型依次分为:byte(8位)、short(16位)、int(32位)、long(64位)。

(P9)8.浮点数类型分为:float(单精度型32位)、double(双精度型64位)。

(P10)第二章运算和语句一、出题点:1.在进行连续的逻辑运算时,不分逻辑与和或的优先级,而是顺序进行逻辑与和或的计算,一旦逻辑表子达式或逻辑表达式能确定结果,就不再继续计算(即条件1&&条件2,若条件1不成立,则条件2也无须再计算。

面向对象编程的基本概念

面向对象编程的基本概念

面向对象编程的基本概念面向对象编程的基本概念随着计算机技术的不断发展和应用的深入,编程语言也不断演化,出现了各种面向对象编程语言,如Java、C++、Python等。

面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将计算机程序模块化,以对象作为程序设计的基本单元进行组织和设计。

本文将从面向对象编程的概念、特点、实现方式、应用等方面进行详细介绍。

一、面向对象编程的概念面向对象编程是一种编程思想和方法,它将现实世界的事物抽象为“对象”,以及对象之间的交互,来进行程序设计和模块化。

对象是指具有属性和方法的实体,它既可以是现实世界中的事物,也可以是抽象的概念,如字符串、整数、函数等。

而方法则是对象的行为,用于操作对象的属性,实现某种功能。

面向对象编程的核心思想就是封装、继承和多态。

二、面向对象编程的特点1、抽象化和封装化面向对象编程通过抽象化和封装化,将复杂的现实世界事物抽象为简单的对象,并将对象的内部细节隐藏起来,使得外部只能通过对象的接口来访问对象,从而实现了信息的隐藏和保护。

2、继承性继承性是面向对象编程的一个重要特点,它允许创建一个新的类,并从一个或多个现有类中继承属性和方法,从而减少了代码的冗余,提高了代码的重用性和灵活性。

3、多态性多态性是面向对象编程的另一个重要特点,它允许不同类型的对象调用同一个方法,不同对象按照自己的方式去实现这个方法,从而增强了程序的灵活性和可扩展性。

三、面向对象编程的实现方式1、类和对象类是具有相同属性和方法的对象的集合,它是面向对象编程的基本概念。

对象是类的实例,包含了类的所有属性和方法,可以通过对象来访问类的属性和方法。

2、封装封装是面向对象编程的特有功能,它可以将属性和方法隐藏起来,只留下外界可以访问的接口,从而达到保护数据的目的。

3、继承和多态继承是面向对象编程中的另一个重要概念,它可以复用已有的代码,减少代码冗余,提高代码的可重用性。

java语言程序设计(一)第三章补充

java语言程序设计(一)第三章补充

专接本辅导java第三章《面向对象编程基础》补充0.类变量与实例变量区别(类方法与实例方法的区别见习题解答第12题改错)java类的成员变量有两种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种没有static修饰,为实例变量。

在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。

在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。

静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。

总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

例如,对于下面的程序,无论创建多少个实例对象,只在类被第一次装置时初始化一次staticVar变量和sum变量,并且每创建一个实例对象,就会执行一次构造函数;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。

public class类变量与实例变量{public static int staticVar = 0;//类变量初始化,只会在类装载时进行一次!!public int instanceVar = 0;//实例变量初始化public static int sum=1;public类变量与实例变量()//构造方法{staticVar++;instanceVar++;sum=sum+5;System.out.println("staticVar = "+staticVar+",instanceVar="+instanceVar);System.out.println("sum = "+sum);}public static void main(String []args){类变量与实例变量对象1=new类变量与实例变量();类变量与实例变量对象2=new类变量与实例变量();类变量与实例变量对象3=new类变量与实例变量();}}运行结果:staticVar = 1,instanceVar=1sum = 6staticVar = 2,instanceVar=1sum = 11staticVar = 3,instanceVar=1sum = 16再如下面的程序,涉及static块:class Value{static int c=0;static int d;Value(){c=15;d=65;}Value(int i){c=i;d=c-1;}static void inc(){c++;}}public class Count {Value v0=new Value();//调用无参构造函数建立Value类非静态对象v0,类Count和类Value是has-a关系Value v=new Value(10);//调用有参构造函数建立Value类非静态对象vstatic Value v1,v2;//声明Value类的static对象v1,v2//static Value v1=new Value(),v2=new Value();//声明v1、v2并引用新建立的Value类对象static{//★声明static块,其初始化工作会先于任何其它非static块及非static变量而不管其在源程序书写中出现的先后次序!System.out.println("static块中println语句执行结果:"+"\n"+"v0和v是非静态内部类对象,v1和v2是静态内部类对象(请与教材P58例3.18对比),只有声明没有具体指向某对象时:v1.c="+v1.c+" v2.c="+v2.c+" v1.d="+v1.d+" v2.d="+v2.d);v1=new Value(30);//对象v1引用新建立的Value类对象System.out.println("static块中执行完“v1=new Value(30)之后:”v1.c="+v1.c+" v2.c="+v2.c+" v1.d="+v1.d+" v2.d="+v2.d);v2=new Value(15);//对象v2引用新建立的Value类对象System.out.println("static块中执行完“v2=new Value(15)之后:”v1.c="+v1.c+" v2.c="+v2.c+" v1.d="+v1.d+" v2.d="+v2.d);System.out.println("特别说明:因此时还没有建立Count类对象(Count 类和Value类是has-a关系,前者是外部类,后者是内部类)故非静态对象v0和v无法引用!"+"\n");}public static void main(String[] args) {Count ct1=new Count();//建立Count类(外部类)对象Count ct2=new Count();System.out.print("在main方法中,现在建立Count类(外部类)对象,");System.out.println("ct1的在ct2之前创建!分别指向两个Count类对象,Count类和Value类是has-a关系!"+"\n"+"以下是main方法体中println语句执行结果:");System.out.println("v0是无参构造内部类非静态对象,ct1.v0.c="+ct1.v0.c+" ct1.v0.d="+ct1.v0.d+" ct2.v0.c="+ct2.v0.c+"ct2.v0.d="+ct2.v0.d);// 非静态内部类对象只能通过外部类对象名访问System.out.println("v是有参构造内部类非静态对象,ct1.v.c="+ct1.v.c+" ct1.v.d="+ct1.v.d+" ct2.v.c="+ct2.v.c+" ct2.v.d="+ct2.v.d);// 非静态内部类对象只能通过外部类对象名访问System.out.println("v1是有参构造内部类静态对象,Count.v1.c="+Count.v1.c+" count.v1.d="+Count.v1.d);//静态内部类对象可以通过外部类名访问System.out.println("v2是有参构造内部类静态对象,Count.v2.c="+Count.v2.c+" count.v2.d="+Count.v2.d);Value.inc();//通过类名调用类方法System.out.println("调用类方法inc()之后Count.v1.c="+Count.v1.c+" Count.v1.d="+Count.v1.d);//引用类变量既可以通过类名也可以通过对象名System.out.println("调用类方法inc()之后Count.v2.c="+Count.v2.c+" count.v2.d="+Count.v2.d);Count.v2.inc();//通过类名调用类方法,这种写法不妥!System.out.println("调用类方法v1.inc()之后Count.v1.c="+Count.v1.c+" Count.v1.d="+Count.v1.d);//引用类变量既可以通过类名也可以通过对象名System.out.println("调用类方法v1.inc()之后Count.v2.c="+Count.v2.c+" count.v2.d="+Count.v2.d);ct1.v0.c++;//this.v0.c++;//错误,★不能在静态上下文中使用this关键字:!因为Value是Count的内部类,只能使用其外部类的对象ct2.v0.c++;System.out.println("顺序执行语句:ct1.v0.c++;ct2.v0.c++;后,ct1.v0.c="+ct1.v0.c+" ct2.v0.c="+ct2.v0.c);// 非静态内部类对象只能通过外部类对象名访问}}上面这个程序的行动结果如下:static块中println语句执行结果:v0和v是非静态内部类对象,v1和v2是静态内部类对象(请与教材P58例3.18对比),只有声明没有具体指向某对象时:v1.c=0 v2.c=0 v1.d=0 v2.d=0static块中执行完“v1=new Value(30)之后:”v1.c=30 v2.c=30 v1.d=29 v2.d=29static块中执行完“v2=new Value(15)之后:”v1.c=15 v2.c=15 v1.d=14 v2.d=14特别说明:因此时还没有建立Count类对象(Count类和Value类是has-a关系,前者是外部类,后者是内部类)故非静态对象v0和v无法引用!在main方法中,现在建立Count类(外部类)对象,ct1的在ct2之前创建!分别指向两个Count类对象,Count类和Value类是has-a关系!以下是main方法体中println语句执行结果:v0是无参构造内部类非静态对象,ct1.v0.c=10 ct1.v0.d=9 ct2.v0.c=10 ct2.v0.d=9v是有参构造内部类非静态对象,ct1.v.c=10 ct1.v.d=9 ct2.v.c=10 ct2.v.d=9 v1是有参构造内部类静态对象, Count.v1.c=10 count.v1.d=9v2是有参构造内部类静态对象, Count.v2.c=10 count.v2.d=9调用类方法inc()之后 Count.v1.c=11 Count.v1.d=9调用类方法inc()之后 Count.v2.c=11 count.v2.d=9调用类方法v1.inc()之后 Count.v1.c=12 Count.v1.d=9调用类方法v1.inc()之后 Count.v2.c=12 count.v2.d=9顺序执行语句:ct1.v0.c++;ct2.v0.c++;后,ct1.v0.c=14 ct2.v0.c=14以上运行结果中,有五点值得注意:一是static变量和static块是在类第一次装载时被初始化一次,并供类的所有对象共享,故static变量和static块中内容最先被初始化(早于main方法)。

面向对象oop编程

面向对象oop编程

面向对象oop编程摘要:一、面向对象编程概述二、面向对象编程的基本概念1.对象2.类3.封装4.继承5.多态三、面向对象编程的优势四、面向对象编程的应用实例五、面向对象编程的注意事项正文:一、面向对象编程概述面向对象编程(Object Oriented Programming,简称OOP)是一种编程范式,它强调将复杂的问题分解为多个简单的对象,并让这些对象之间相互协作来解决问题。

面向对象编程是一种抽象的编程方法,它要求程序员从对象的角度出发,考虑问题的解决方案。

二、面向对象编程的基本概念1.对象对象是面向对象编程的基本单元,它是现实世界中某一具体事物在计算机中的抽象表示。

对象具有状态、行为和身份等属性。

状态是对象的数据,行为是对象的操作,身份是对象的类型。

2.类类是对象的抽象描述,它是一组具有相同属性和行为的对象的集合。

类定义了对象的属性和方法,是面向对象编程的基本构建块。

3.封装封装是将数据和操作数据的方法捆绑在一起的过程,它是面向对象编程的基本原则之一。

封装有助于提高代码的可维护性和安全性。

4.继承继承是一种机制,使得一个类可以继承另一个类的属性和方法。

继承有助于减少代码重复,提高代码的重用性。

5.多态多态是指同一操作在不同的对象上具有不同的行为。

它有助于提高代码的灵活性和可扩展性。

三、面向对象编程的优势面向对象编程具有以下优势:1.可维护性:面向对象编程有助于提高代码的可维护性,因为它可以将复杂的问题分解为多个简单的对象,每个对象具有独立的功能和职责。

2.可重用性:面向对象编程有助于提高代码的可重用性,因为它可以通过继承、组合和多态等机制实现代码的重用。

3.可扩展性:面向对象编程有助于提高代码的可扩展性,因为它可以通过添加新的对象来扩展系统的功能,而不需要修改现有的代码。

4.可靠性:面向对象编程有助于提高代码的可靠性,因为它可以通过封装、继承和多态等机制来降低代码之间的耦合度,提高代码的独立性。

第3章-面向对象程序设计(上)ppt课件(全)

第3章-面向对象程序设计(上)ppt课件(全)

面向对象的基本概念
❖ 对象(Object)是一个应用系统中用来描述客观 事物的实体,是具有特定属性(数据)和行为 (方法)的基本运行单位,是类的一个特定状态 下的实例。
❖ 类(Class)是Java代码的基本组织模块,是用 以描述一组具有共同属性和行为的对象的基 本原型,是对这组对象的概括、归纳与抽象 表达,它定义了本类对象所应拥有的状态属 性集及操作这组属性的行为方法集。
也可以一步完成,即:
类名称 对象变量 = new 类名称();
实例化对象(续)
❖ 一旦一个类的实例化对象产生,就可以通过该对象 访问类中定义的成员了。通过对象访问成员的基本 结构如下:
对象变量.属性 = 值; 对象变量.方法();
3.2 方法
任务2--Leabharlann 方法的定义【任务内容】给任务1中的媒体播放器类增加控制方 法
❖ JAVA的类由类的声明与类体两部分组成。
1、类的声明用来指定该类的访问修饰符、类的
名称、父类名称及实现接口等属性。声明类的完整 形式为: [public][abstract|final] class <类名> [extends<基类名> ]
[implements <接口列表>]
类名应该能够描述出类的 特征或作用,类名的第一 个字母通常要大写,如果 类名由多个单词组成,则 每一单词的首字母一般都
【范例 3-1】 设计一个媒体播放器类
class MediaPlayer{ //音乐文件路径 public String musicFile; //播放器音量,范围:0(静音)~100 public int soundLevel; //播放器状态 public boolean isPlaying;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

}
17
例:银行业务
要求:处理简单帐户存取款、查询 面向对象的分析(OOA)
对象模型抽象:银行帐户
对象模型分析: 余额、存、取、查
面向对象的设计(OOD)
对象模型的实现:类及其成员定义 BankAccount类 Banlance, etc getBalance(), getMoney(), etc
局部变量与成员 变量名字相同, 则成员变量隐藏
this.x和this.y 代表成员变 量
27
一个值得注意的问题

一个类中的方法可以互相使用
float min(float x, float y) { if(x<=y) return x; else return y; } }
class A { float a,b; void sum(float x, float y) { a=max(x,y); b=min(x,y);} float max(float x, float y) { if(x<=y) return y; else return x; }
例2
class Point { int x,y; Point() //constructor { x=12; y=16; } Point(int a,int b) //constructor { x=a; y=b; } } public class B { public static void main(String args[ ]) { Point p1,p2; //声明对象p1和p2 p1=new Point(); //为对象分配内存,使用new p2=new Point(23,35); //和类中的构造方法。 … 32 } }
7
JAVA中类的声明
类说明语法:
[ 类修饰符] class 类名 [ extends 超类名 ] [ implements 接口名 ] { 成员变量定义; 类体 方法定义; }
8
JAVA中类的声明(续)

类修饰符(Modifier):
public:允许其他类(没有限制)访问本类,一个源文件

通告本方法中会产生的例外(异常)类型,
提醒调用者要对相应的可能例外进行处理。 当执行此方法并发生了例外时,程序会转入 调用者编制的例外处理程序段。
16
方法的声明(续)

例:
class shape{ private int x; static float MaxArea=100.0f; public void setx(int newx){x=newx;} public int getx( ){return x} public static void setMA(float newMA){ MaxArea=newMA; }
仅可以有一个public类 缺省:可被当前包中的其他类访问 abstract:没有实例的抽象概念类 final:不能再被扩展,不包含子类的类;易于安全性的实 现,或用于创建固定功能的类
父类继承声明:extends 父类名 实现接口(interface):implements 接口名

10
类的成员变量的声明

声明成员变量〔member〕的语法
[修饰符] 数据类型 变量名;
引用:对象名.变量 修饰符 访问控制符

public:可被所有其他类引用
private:仅可被该类自身引用和修改,不
能被其他任何类(包括子类)引用
11
成员变量的声明(续)
protected:该类自身、子类、同一包中的其他
28
三、对象

类是创建对象的摸板。
创建对象
对象的内存模型 使用对象
对象是引用型变量
实例变量和类变量的区别 实例方法和类方法的区别
29
1.创建对象

两个步骤:
对象的声明 类的名字 对象名字; 如:Point p1; A a;
为对象分配内存
使用new运算符和类的构造方法为声明的对象分 配内存,如果类中没有构造方法,系统会调用默认 的构造方法。 如:p1=new Point(); a=new A();
30
两个例子
例1
class Xiyoujipeople { float hight,weight; String head,ear,hand,foot,mouth; void speak(String s) { System.out.println(s); } } class A { public static void main(String args[ ]) { Xiyoujipeople zhubajie; //声明对象 zhubajie=new Xiyoujipeople(); //为对象分配内存, //使用new和默认构造方法。 ... 31 } }
面向对象编程
主要内容
OOP的概念及特点 Java中面向对象编程

创建自定义类、接口和包
类的继承
构造函数

应用编程
Java类库介绍 数组与字符串
2
OOP概念
过程式程序设计
函数 函数 函数 函数
方法
OOP程序设计
消息
数据
方法
公共数据
数据
算法+数据结构
对象+消息
3
OOP的主要特点

封装(encapsulation)
0
0 zhubajie zhubajie null height weight head hand foot mouth

多态(polymorphism)
用同一个名字调用实现不同操作的方法 方式1:不同的类之间的同名方法
如:中国人/日本人/美国人 说话 方式2:参数不同的同名方法(如加号) 使用方便,且降低了维护和编程量
5
JAVA中的OOP

几个概念
类:抽象的集合概念 系统类库中已定义好的类 用户自定义的类 对象(实例instance):实际个体 创建某个类的具体对象(类似变量声明) 类名 欲创建的对象名 = new 类名( 参数表 ) ;
static:静态方法,又称类方法 使用类名或对象名作为前缀,建议使用类名 在方法体中只能使用static变量和static方法 abstract:只有接口没有语句,要在子类中通过
重新定义(override)来实现 final:不能被重新定义(override)
15
方法的声明(续)
返回类型:void、return 参数列表:参数类型可为类类型 throws:

25
构造方法
构造方法只能在创建类对象时由系统隐 含调用,而不能直接引用; 类对象创建 时,利用运算符 new 在内存中开辟专用 空间,存放指定的类的实例(即对象), 这时会自动执行类的构造方法,初始化 新对象的成员变量 例:Point类

26
构造方法
class Point { int x,y; Point() { x=67; y=100;} Point(int x, int y) { this.x=x; this.y=y;} }
23
构造方法(constructor)

问题的提出
Java试图在每个对象一诞生时,就给它一确定的
状态,但有时这种系统的缺省初值不 合适;所以在创建一个新对象时,需用构造 方法完成合法的初始化,使类内成员的初始 化工作不依赖于外界完成。
24
构造方法
一种特殊方法 名字必须与它所在的类的名字完全相同 不返回任何数据类型,即void型(void可 以省略不写) 可以完成更多的操作,而不仅仅局限于 变量的初始化;另外还可创建多个构造 函数(重载)。
13
方法的声明
定义对类内成员变量(数据)的操作 方法的声明语法:

[修饰符] 返回类型 方法名(参数列表) [ throws 例外名 ] { 方法体; }

方法的性质、接受哪些参数、如何返回 信息
14
方法的声明(续)

修饰符(Modifier):
访问控制符: public、private、protected、private protected
2.对象的内存模型

用一个例子来说明:
class Xiyoujipeople { float height,weight; String head,ear,hand,foot,mouth; void speak(String s) { System.out.println(s); } } class A { public static void main(String args[ ]) { Xiyoujipeople zhubajie; //声明对象 zhubajie=new Xiyoujipeople(); //为对象分配内存, //使用new和默认构造方法。 ... } }
类 private protected:该类自身、子类 缺省:本包中的类
static:类成员变量,对所有的实例一致,
引用时前缀可使用类名或对象名 final:数值不变常量,定义同时应对其进 行初始化
12
成员变量的声明(续)

例: class shape{ private protected int x; private protected int y; static final float MaxArea=100.0f; …………………….. }

22
方法重载
class Tom { float jerry(float s) {return s;} float jerry(float x, int y) {return x*x+y*y;} float jerry(int x, float y) {return x*x+y*y;} float jerry(float x, float y, float z) {return x*x+x*y+z;} }
相关文档
最新文档