第三章 面向对象编程
第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语言程序设计》(第三版)课程教学大纲学分:3学分学时:45学时(其中:讲课学时:30上机学时:15 )适用专业:通识选修课、专业拓展课一、课程的性质与目标《Java语言程序设计》的可作为一门计算机科学与技术的普及课、入门课,用作专业拓展课或非计算机专业的通识选修课。
通过本课程的学习,学生能够了解Java语言特征、常用的Java类库以及面向对象程序设计思想,并理解计算机软件和计算机系统的工作原理和方式,提高对计算机科学与技术的兴趣,促进学生能在未来的学习和工作中,使用“计算机思维”来解决实际问题,全面提高学生的综合素质。
二、课程设计理念与思路课程设计理念:高等职业教育不仅注重对专业知识和技能的传授,也注重对学生综合素质的培养,不局限于个人选择的专业,有助于个人潜力能够得到最大限度的发挥。
在全球云计算和移动互联的产业背景下,在高等教育的通识教育中增加有关计算机技术基础知识与能力的课程,有助于非计算机专业大学生综合素质的提高。
课程设计思路:Java语言程序设计作为一门选修课,让学生把一门程序设计语言掌握到实用的程度较有难度。
本课程并非介绍Java标准版的所有内容,而是通过Java语言深入理解程序设计的精髓,大局部知识点是适用于所有编程的基础知识,如变量、运算符、流程控制语句和10等。
潜移默化地培养学生程序化、系统化的思维模式,让学生能够使用抽象思维分类解决问题。
同时,培养学生的自学能力。
软件技术的开展日新月异,教材不能做到和语言同步,互联网的存在为自学掌握一门技能提供了便捷,可以让学生自己分析问题、动手编程和,在此过程中,学生上网查阅相关资料,能够更新知识,并逐渐具备独立研究的能力。
三、教学条件要求操作系统:Windows 10五、学时分配注:可选章节未计入合计课时。
六、考核模式与成绩评定方法本课程为考试课程,期末考试采用百分制的闭卷考试模式。
学生的考试成绩由平时成绩(30%)和期末考试(70%)组成,其中,平时成绩包括出勤(5%)、作业(5%)、实验和上机成绩(20%)。
自考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第三章《面向对象编程基础》补充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编程摘要:一、面向对象编程概述二、面向对象编程的基本概念1.对象2.类3.封装4.继承5.多态三、面向对象编程的优势四、面向对象编程的应用实例五、面向对象编程的注意事项正文:一、面向对象编程概述面向对象编程(Object Oriented Programming,简称OOP)是一种编程范式,它强调将复杂的问题分解为多个简单的对象,并让这些对象之间相互协作来解决问题。
面向对象编程是一种抽象的编程方法,它要求程序员从对象的角度出发,考虑问题的解决方案。
二、面向对象编程的基本概念1.对象对象是面向对象编程的基本单元,它是现实世界中某一具体事物在计算机中的抽象表示。
对象具有状态、行为和身份等属性。
状态是对象的数据,行为是对象的操作,身份是对象的类型。
2.类类是对象的抽象描述,它是一组具有相同属性和行为的对象的集合。
类定义了对象的属性和方法,是面向对象编程的基本构建块。
3.封装封装是将数据和操作数据的方法捆绑在一起的过程,它是面向对象编程的基本原则之一。
封装有助于提高代码的可维护性和安全性。
4.继承继承是一种机制,使得一个类可以继承另一个类的属性和方法。
继承有助于减少代码重复,提高代码的重用性。
5.多态多态是指同一操作在不同的对象上具有不同的行为。
它有助于提高代码的灵活性和可扩展性。
三、面向对象编程的优势面向对象编程具有以下优势:1.可维护性:面向对象编程有助于提高代码的可维护性,因为它可以将复杂的问题分解为多个简单的对象,每个对象具有独立的功能和职责。
2.可重用性:面向对象编程有助于提高代码的可重用性,因为它可以通过继承、组合和多态等机制实现代码的重用。
3.可扩展性:面向对象编程有助于提高代码的可扩展性,因为它可以通过添加新的对象来扩展系统的功能,而不需要修改现有的代码。
4.可靠性:面向对象编程有助于提高代码的可靠性,因为它可以通过封装、继承和多态等机制来降低代码之间的耦合度,提高代码的独立性。
第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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实 例 验 证 … …
不 同 包 子 类
package accessdemo.otherpack; import accessdemo.SuperClass; public class OtherPackSubClass extends SuperClass { public static void main(String args[]) { OtherPackSubClass s1=new OtherPackSubClass(); s1.testPublic(); s1.testProtected(); s1.testFriendly(); s1.testPrivate(); } }
15
面向对象的应用举例(2)
程序ObjectOperating.java :
public class ObjectOperating { public static void main(String args[]) { BirthDate b = new BirthDate(); b.setDay(25); b.setMonth(12); b.setYear(2003); b.day = 2; b.year = 2003; b.show(); } }
5
封装的实体=数据+方 法 数据或变量
类
方法
抽 象
实 例 化 属性或状态
对象
操作或行为
创建类
class name { type variable1; … type variableN;
在类中,属性是通过成员变 量体现的,而操作是用成员 函数(又称为方法)实现的。
Java中定义类的通用格式:符
Java中共有四种访问修饰符:
1、public :完全公开,没有类或包的限制
2、protected:强调继承关系,没有包的限制
3、default:有包的限制,没有类的限制,对于同一包
中的类来说,相当于public修饰符。也可叫做package private 4、private:有包的限制,同时也有类的限制,只能被 同一个类中的成员函数或内部类访问。
10
默认的构造方法(1)
Java语言中,每个类都至少有一个构造方法;
如果类的定义者没有显式的定义任何构造方法, 系统将自动提供一个默认的构造方法:
– 默认构造方法没有参数
– 默认构造方法没有方法体
Java类中,一旦类的定义者显式定义了一个或多 个构造方法,系统将不再提供默认的构造方法;
11
默认的构造方法(2)
实 例 验 证 … …
同 一 包 不 同 类
20
package accessdemo; import accessdemo.SuperClass; public class SamePackOtherClass { public static void main(String args[]) { SuperClass s=new SuperClass(); s.testPublic(); s.testProtected(); s.testFriendly(); s.testPrivate(); } }
• 举例:
public void setdate(int day, int month, int year){ day=23; month=7; year=2003; }
9
构造方法
• 构造函数名称与类名称相同 • 构造函数没有返回类型 • 其任务是在创建对象时初始化其内部状态
class Fruit { boolean seedLess; boolean seasonal; float price; Fruit(boolean seed, boolean season, float p) { seedLess = seed; seasonal = season; price = p; } }
package accessdemo; public class SuperClass { public void testPublic( ) {System.out.println("a public method in superclass");} protected void testProtected( ) {System.out.println("a protected method in superclass");} void testFriendly( ) {System.out.println("a friendly method in superclass");} private void testPrivate( ) {System.out.println("a private method in superclass");} public static void main( String args[ ] ) { SuperClass sc=new SuperClass( ); sc.testPublic( ); sc.testProtected( ); sc.testFriendly( ); sc.testPrivate( ); } }
• 使用下列语法可创建对象: • 关键字 new 通常称为创建运算符,用于分 配对象内存,并将该内存初始化为缺省值。 • 一旦 new 完成分配和初始化内存,它就将 调用构造函数来执行对象初始化。
class FruitDemo { public static void main(String args[]){ Fruit f = new Fruit(true,false,50.0F); } 创建对象 }
实 例 验 证 … …
同 一 包 子 类
21
package accessdemo; import accessdemo.SuperClass; public class SamePackSubClass extends SuperClass { public static void main(String args[ ]) { SamePackSubClass s1=new SamePackSubClass( ); s1.testPublic( ); s1.testProtected( ); s1.testFriendly( ); s1.testPrivate( ); } }
}
应用举例:public class Test{
public static void main(String args[]){ Person d = new Person() ; d.setAge(120); }
}
12
创建对象
new 构造函数
当创建一个类时,只是 创建了一种新的数据类 型。对象是类的一个实 例。
2
面向对象的思想概述
1. 面向对象的编程思想力图使对计算机 语言中对事物的的描述与现实世界中 该事物的本来面目尽可能的一致。
2. 类(class)和对象(object)是面向对象 方法的核心概念。类是对一类事物描 述,是抽象的、概念上的定义;对象 是实际存在的该类事物的每个个体, 因而也称实例(instance)。
22
实 例 验 证 … …
不 同 包 不 同 类
23
package accessdemo.otherpack; import accessdemo.SuperClass; public class OtherPackOtherClass { public static void main(String args[]) { SuperClass s=new SuperClass( ); s.testPublic(); s.testProtected(); s.testFriendly(); s.testPrivate(); } }
13
练习
分析并编译、运行下面的源文件,体会类的定义、对象的创建、 对象成员方法的调用、类的定义和应用程序在源文件结构上的不 同;
//源文件A.java
//源文件Test.java
public class A { public void m1() { System.out.println("hi"); } } public class Test { public static void main(String[] args) { A hello=new A(); hello.m1(); } }
type methodname1(parameter-list){ //方法体 } … type methodnameN(parameter-list){ //方法体 } }
6
成员方法 (对象行为 或操作)
类和对象举例
定义一个类:
class Person { int age; int getAge() { return age; } void setAge(int i){ age = i; } }
第三章
面向对象的编程
类设计
本章知识要点: 定义继承、多态、重载、覆盖和虚拟方法调用 使用访问修饰符protected和“友元包” 描述构造器和方法重载的概念 描述完整的对象构造和初始化操作 在java程序中识别下列内容
重载方法和构造器 使用this来调用重载的构造器 覆盖方法 调用超类方法 父类构造器 调用父类构造器
14
面向对象的应用举例(1)
程序BirthDate.java :
public class BirthDate { private int day; private int month; public int year; public void setDay(int d) { day = d; } public void setMonth(int m) { month = m; } public void setYear(int y) { year = y; } public int getDay() { return day; } public int getMonth() { return month; } public int getYear() { return year;} public void show(){ System.out.println(day + "-" + month + "-" + year); } }