JAVA讲义第四讲下
第四Java面向对象编程基础-PPT文档资料

4-15
–
类中变量的默认初始化
•
Java中,一个类中如果没有定义构造方法,则编 译器会自动生成一个没有参数的构造方法,用来初 始化类对象,并将类中变量自动初始化为该类型的 默认值:
Programming in Java
4-16
• • • • •
① 整型初始化为0; ② 实型初始化为0.0f、0.0d; ③ 逻辑型初始化为false; ④ 字符型初始化为'\u0000'; ⑤ 类对象初始化为null,表明不指向任何内存地 址的引用 • 如果类中定义了构造方法,则不会自动生成没 有参数的构造方法。
创建对象
1. 格式: 类名 新建对象名 =new 构造函数(参数 ); eg: 1. Phonecard mycard=new phonecard()
4-9
Programming in Java
4-10
2 使用对象的数据和方法
public class testcircle {public static void main(String[] args) {circle mycircle = new circle(); System.out.println("the area of the circle of radius"+mycircle.radius+"is"+mycircle.findarea());}} class circle { double radius=1.0; double findarea() {return radius*radius*3.14159;}} objectname.method引用对象的方法 objectname.data引用对象的数据
java程序设计第四讲教案

教案首页周次 日期 课时序课题字符串处理 字符串是 Java 应用程序中最常用的数据类型,要求学生 能够理解字符串的基本概念和使用情况 String、StringBuffer 类;命令行参数 String、StringBuffer 类;命令行参数 第六章 字符串处理(3*45‘) 第一节 类 String 字符串(40‘) 第二节 类 StringBuffer 字符串(40‘) 第三节 main 方法的命令行参数(25‘) 第四节 字符串应用举例(30‘)教学目的 要 重 难 求 点 点教学过程 设 及 时间分配 计教学场所 或教学方法 作 业使用 教具课 后 记授课教师1第六章 字符串处理从本章开始介绍的是 Java 的应用,与前面几章有所不同,以后将主要讲授程 序范例,让学生增强应用能力,而此前主要是讲授理论知识为主。
字符串是字符的序列,它是组织字符的基本数据结构。
对于大多数程序员来说 都是很重要的。
Java 将字符串当作对象来处理。
Java 语言中的包 ng 封装了 final 类 String 和 StringBuffer 类。
6.1 6.1.1类 String 字符串 类 String 字符串的定义String 类是字符串常量类,String 对象建立后不能修改。
以前使用的每个字符 串常量(用双引号括起来的一串字符串)实际上都是 String 对象。
构造方法有: String() Initializes a newly created String object so that it represents an empty character sequence.String(byte[] bytes) Construct a new String by converting the specified array of bytes using the platform's default character encoding.String(byte[] ascii, int hibyte) Deprecated. This method does not properly convert bytes into characters. As of JDK 1.1, the preferred way to do this is via the String constructors that take a character-encoding name or that use the platform's default encoding.String(byte[] bytes, int offset, int length) Construct a new String by converting the specified subarray of bytes2using the platform's default character encoding.String(byte[] ascii, int hibyte, int offset, int count) Deprecated. This method does not properly convert bytes into characters. As of JDK 1.1, the preferred way to do this is via the String constructors that take a character-encoding name or that use the platform's default encoding.String(byte[] bytes, int offset, int length, String enc) Construct a new String by converting the specified subarray of bytes using the specified character encoding.String(byte[] bytes, String enc) Construct a new String by converting the specified array of bytes using the specified character encoding.String(char[] value) Allocates a new String so that it represents the sequence of characters currently contained in the character array argument.String(char[] value, int offset, int count) Allocates a new String that contains characters from a subarray of the character array argument.String(String value) Initializes a newly created String object so that it represents the same sequence of characters as the argument; in other words, the newly created string is a copy of the argument string.String(StringBuffer buffer) Allocates a new string that contains the sequence of characters currently3contained in the string buffer argument.利用这些构造函数来定义 String 对象。
JAVA课件第4章

//成员方法, //成员方法, 计算到原点的距离 成员方法
{ return Math.sqrt(x*x+y*y); }
例4-2 学生类
//定义学生类 public class Student //定义学生类 //学生姓名 {public String name; //学生姓名 //学生编号 public String number; //学生编号 //学生年龄 private int age; //学生年龄 private int math,physics; //两门课程成绩 //两门课程成绩 public Student(String na, String nu, int a, int m, int p) {name=na; number=nu; age=a; math=m; physics=p; } public void setMath(int m) {math=m; } public void setPhysics(int p) {physics=p;} public void getMath() {return math;} public void getPhysics() {return physics;} //计算平均成绩 public int average() //计算平均成绩 { return (math + physics)/2; } }
public(公共 公共) (2) public(公共)
public修饰的成员变量可以被程序中的任何类所访问.由于public成 public修饰的成员变量可以被程序中的任何类所访问.由于public成 修饰的成员变量可以被程序中的任何类所访问 public 员变量不受限制, 这易使类的对象引起不希望的修改, 员变量不受限制, 这易使类的对象引起不希望的修改,建议成员变量尽 量不要使用public修饰符. 量不要使用public修饰符. public修饰符
java第4章PPT教学课件

2020/12/12
2020/12/12
3
图示:类与对象的关系
2020/12/12
4
4.2 面向对象软件开发的基本过程
1、面向对象的软件开发过程 2、面向对象的分析阶段 3、面向对象的设计阶段 4、实现阶段
2020/12/12
5
1、面向对象的软件开发过程ቤተ መጻሕፍቲ ባይዱ
用面向对象的方法来解决实际问题,是一个比较复 杂的过程,它包括面向对象的分析(OOA)、面向对象的 设计(OOD)和面向对象的编程(OOP)。
这些需求进行分析和筛选,与用户协商,去掉用户的需求中 的不合理元素,形成一个合理的方案。
需求分析的过程是一个复杂、烦琐、甚至艰难的过程, 通常需要反复讨论、协商和修改,才能达成最后的一致。需 求分析非常重要,如果做的不好, 会形成隐患和障碍,影响
整个开发工作。需求分析最后应形成书面的需求陈述。
2020/12/12
2020/12/12
2
2、什么是类
在Java程序中,类是创建对象的模板,对象是类的实例, 任何一个对象都是隶属于某个类的。
类是同种对象的集合与抽象。分类所依据的原则是抽象, 即抽象出能反映与当前目标有关的本质特征,而忽略那些与当 前目标无关的非本质特征,从而找出事物的共性,把具有共同 性质的事物归结为一类,得出一个抽象的概念——类。
6
图示
2020/12/12
Java基础语法第4天(方法数组)讲义

第4天Java基础语法今日内容介绍◆随机点名器案例◆库存管理案例封装◆其他知识点今日内容学习目标◆能独立完成“随机点名器”案例源代码编写、编译及运行操作◆能独立完成“库存管理”案例源代码编写、编译及运行操作◆能够完成在源代码中使用方法进行运算操作◆能够完成在源代码中使用数组进行运算操作第1章随机点名器案例1.1案例介绍随机点名器,即在全班同学中随机的打印出一名同学名字。
要做的随机点名器,它具备以下3个内容:●存储所有同学姓名●总览全班同学姓名●随机点名其中一人,打印到控制台在编写案例前,我们先来学习下本案例中所涉及到的知识点:●方法●数组1.2案例学习目标●能独立完成“随机点名器”案例源代码编写、编译及运行操作●能够完成在源代码中使用方法进行运算操作●能够完成在源代码中使用数组进行运算操作1.3方法今天我们来详细聊聊Java中的方法,那么,方法是什么呢?假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹。
发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样会导致程序变得很臃肿,可读性也非常差。
那么,为了解决代码重复编写的问题,我们可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。
上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,程序在需要发射炮弹时调用该方法即可。
接下来通过一些案例来介绍方法在程序中起到的作用,先来看一下在不使用方法时如何实现打印三个长宽不同的矩形,如下所示。
MethodDemo01.javapublic class MethodDemo01 {public static void main(String[] args) {// 下面的循环是使用*打印一个宽为5、高为3的矩形for (int i = 0; i < 3; i++) {for (int j = 0; j < 5; j++) {System.out.print("*");}System.out.println("");}System.out.println("");// 下面的循环是使用*打印一个宽为4、高为2的矩形for (int i = 0; i < 2; i++) {for (int j = 0; j < 4; j++) {System.out.print("*");}System.out.println();}System.out.println();// 下面的循环是使用*打印一个宽为10、高为6的矩形for (int i = 0; i < 6; i++) {for (int j = 0; j < 10; j++) {System.out.print("*");}System.out.println();}System.out.println();}}运行结果如下图所示。
04JAVA基础语法第4天(方法、数组)讲义

04JAVA基础语法第4天(⽅法、数组)讲义第4天Java基础语法今⽇内容介绍◆随机点名器案例◆库存管理案例封装◆其他知识点今⽇内容学习⽬标◆能独⽴完成“随机点名器”案例源代码编写、编译及运⾏操作◆能独⽴完成“库存管理”案例源代码编写、编译及运⾏操作◆能够完成在源代码中使⽤⽅法进⾏运算操作◆能够完成在源代码中使⽤数组进⾏运算操作第1章随机点名器案例1.1案例介绍随机点名器,即在全班同学中随机的打印出⼀名同学名字。
要做的随机点名器,它具备以下3个内容:●存储所有同学姓名●总览全班同学姓名●随机点名其中⼀⼈,打印到控制台在编写案例前,我们先来学习下本案例中所涉及到的知识点:●⽅法●数组1.2案例学习⽬标●能独⽴完成“随机点名器”案例源代码编写、编译及运⾏操作●能够完成在源代码中使⽤⽅法进⾏运算操作●能够完成在源代码中使⽤数组进⾏运算操作1.3⽅法今天我们来详细聊聊Java中的⽅法,那么,⽅法是什么呢?假设有⼀个游戏程序,程序在运⾏过程中,要不断地发射炮弹。
发射炮弹的动作需要编写100⾏的代码,在每次实现发射炮弹的地⽅都需要重复地编写这100⾏代码,这样会导致程序变得很臃肿,可读性也⾮常差。
那么,为了解决代码重复编写的问题,我们可以将发射炮弹的代码提取出来放在⼀个{}中,并为这段代码起个名字,这样在每次发射炮弹的地⽅通过这个名字来调⽤发射炮弹的代码就可以了。
上述过程中,所提取出来的代码可以被看作是程序中定义的⼀个⽅法,程序在需要发射炮弹时调⽤该⽅法即可。
接下来通过⼀些案例来介绍⽅法在程序中起到的作⽤,先来看⼀下在不使⽤⽅法时如何实现打印三个长宽不同的矩形,如下所⽰。
MethodDemo01.javapublic class MethodDemo01{public static void main(String[]args){//下⾯的循环是使⽤*打印⼀个宽为5、⾼为3的矩形for(int i=0;i<3;i++){for(int j=0;j<5;j++){System.out.print("*");}System.out.println("");}System.out.println("");//下⾯的循环是使⽤*打印⼀个宽为4、⾼为2的矩形for(int i=0;i<2;i++){for(int j=0;j<4;j++){System.out.print("*");}System.out.println();}System.out.println();//下⾯的循环是使⽤*打印⼀个宽为10、⾼为6的矩形for(int i=0;i<6;i++){for(int j=0;j<10;j++){System.out.print("*");}System.out.println();}System.out.println();}}运⾏结果如下图所⽰。
java基础编程 第四章 面向对象(下) 案例
案例4-1 super访问父类成员变量一、案例描述1、考核知识点编号:029004003名称:super关键字2、练习目标➢掌握使用super关键字访问父类成员变量的方法3、需求分析子类可以继承父类的非私有成员变量,如果在子类中修改了继承自父类的成员变量的值,再想要访问父类的该成员变量时,可以通过super.成员变量来实现。
为了让初学者熟悉super关键字的用法,本案例将分别设计Fu类及其子类Zi,并在Zi类的方法中使用super关键字访问Fu类的成员变量。
4、设计思路(实现原理)1)编写一个Fu类,在类中定义无参构造和一个初始值为20的num成员变量。
2)Zi类继承Fu类,在子类中对num值进行了修改,同时在子类中定义无参构造和一个无返回值的method()方法,method()方法中使用super关键字调用了Fu类的num成员变量。
3)定义测试类Example03。
二、案例实现1、编写Fu类及其子类Zi,在Zi类中使用super关键字调用Fu类成员变量,代码如下class Fu {Fu() {}int num = 20;}class Zi extends Fu {Zi() {}int num = 30;// 修改num的值void method() {System.out.println("method");// super关键字调用父类成员变量System.out.println("Fu类中num值为:" + super.num);System.out.println("Zi类中num值为:" + num);}}2、定义测试类Example03,代码如下:class Example03{public static void main(String[] args) {Zi z = new Zi();z.method();}}运行结果如图4-3所示。
Java第四讲
具有与类相同的名称; 不含返回值; 不能在方法中用return语句返回一个值 构造方法由java编译器负责调用。 注意:在构造方法里不含返回值的概念不同 于”void”。 public void person(); ——不是构造方法
构造方法的作用:当一个类的实例对象
刚产生时,这个类的构造方法就会被自 动调用,我们可以在这个方法中加入要 完成初始化工作的代码。 构造方法可以为类的成员变量进行初始 化工作。
态成员(包括变量和方法),而不能直接访 问类中的非静态成员。 静态方法不能以任何方式引用this和super关 键字。 main()方法是静态的,在main()方法中不能 直接访问该类中的非静态成员。(如:去掉 passparam.java中的change()方法的static 属性)
静态代码块
在一个类内部定义类,这就是嵌套类,也叫
内部类,内置类。 内部类可以直接访问嵌套它的类的成员,但 是内部类的成员却不能被嵌套它的类直接访 问。例:inner.java
内部类的好处
使程序代码更为紧凑,程序更具模块化。 当类A中的程序代码要用到类B的实例对象,
而类B中的程序代码又要访问类A中的成员, 将类B做成类A的内部类,程序代码比较容易 编写。 练习:把inner.java中的inner类拿出,如何 改写程序。(inner1.java) 注意:内部类很少用static修饰,如果用 static,这个内部类就相当于一个外部定义的 类。
优选的代码结构、编程风格以及解决问题的 思考方式。 单态设计模式,就是采取一定的方法保证在 整个的软件系统中,对某个类只能存在一个 对象实例,并且该类只提供一个取得其对象 实例的方法。
7.理解main方法的语法
JAVA第四次课
JAVA第四次课 JAVA中的继承和抽象类1. JAVA中的继承使⽤extends,JAVA中不允许多继承2. JAVA中默认⽀持动态绑定,如果不希望⼦类重写⽗类的函数,使⽤final关键字。
3.this:代表当前对象。
4.super:调⽤⽗类的⽅法或者⽗类的构造函数。
5.instanceof:判断⼀个对象是否是类的实例.(1)Employee e=new Employee();if(e instanceof Employee){System.out.println("OK");}else{System.out.println("NO");}(2)Employee m=new Employee();if(m instanceof Manager){System.out.println("OK");}else{System.out.println("NO");}(3)Employee e=new Manager();if(e instanceof Employee){System.out.println("OK");}else{System.out.println("NO");}6.final的使⽤总结:(1)final修饰变量:说明该变量是⼀个常量,程序运⾏过程中不可以修改。
(2)final修饰⽅法:说明该⽅法在⼦类中不可以重写。
(3)final修饰类:说明该类不可以继承。
同时该类中的⽅法全部为final.7.动态绑定的置换原则:程序中出现超类对象的任何地⽅都可以⽤⼦类的对象进⾏替换。
8.抽象类:(1)当⾃⾝部分⾏为⽆法确定时(⼦类确定)时,可以把该类的⽅法设计为抽象⽅法,具有抽象⽅法的类称作抽象类。
(2) 抽象⽅法不可以实例化对象。
但是抽象类可以定义抽象类变量。
(3) 使⽤abstract定义抽象类,同时抽象⽅法必须使⽤abstract修饰。
Java基础第4章课件
父类无参的构造方法。
– 为了解决上述程序的编译错误,可以在子类中显示地调用父类中 已有的构造方法,当然也可以选择在父类中定义无参的构造方法
,现将例程4-4中的Animal类进行修改,如例程4-5所示。
4.2 final 关键字
让IT教学更简单,让IT学习更有效
• final关键字可用于修饰类、变量和方法,它有“这是无法 改变的”或者“最终”的含义,因此被final修饰的类、变 量和方法将具有以下特性:
类的成员变量、成员方法和构造方法。接下来分两种情况来学习
一下super关键字的具体用法。 – 1、使用super关键字调用父类的成员变量和成员方法。具体格式
如下:
4.1 类的继承
让IT教学更简单,让IT学习更有效
4.1 类的继承
• 4.1.1重写父类方法
让IT教学更简单,让IT学习更有效
– 2、使用super关键字调用父类的构造方法。具体格式如下:
4.2 final 关键字
让IT教学更简单,让IT学习更有效
• 这是因为使用final关键字修饰成员变量时,虚拟机不会对其进行初 始化。因此使用final修饰成员变量时,需要在定义变量的同时赋予 一个初始 name = "李芳"; // 为final关键字修饰的name属性赋值
• 出错的原因是,在调用animalShout()方法时,传入一个Dog对象, 在强制类型转换时,Animal类型的变量无法强转为Cat类型。
4.4 多态
• 4.4.2 对象的类型转换
让IT教学更简单,让IT学习更有效
– 针对这种情况,Java提供了一个关键字instanceof,它可以判断一 个对象是否为某个类(或接口)的实例或者子类实例,语法格式如下