Java基础课程05-第五章 类和对象
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//定义属性部分
属性1的类型 属性1; 属性2的类型 属性2;
…
属性n的类型 属性n; //定义方法部分 方法1; 方法2; … 方法m; }
类的定义
• 定义一个类的步骤
1、定义类名
2、编写类的属性 3、编写类的方法
College类 属性: 学校全称 学校地址 教职员工数目 方法: 展示学校信息
类的定义
30
构造函数注意事项
• 构造方法是一种特殊的方法,具有以下特点。 • (1)构造方法的方法名必须与类名相同。 • (2)构造方法没有返回类型,也不能定义为void,在方法名前面不 声明方法类型。
• (3)构造方法的主要作用是完成对象的初始化工作,它能够把定义
对象时的参数传给对象的域。 • (4)一个类可以定义多个构造方法,如果在定义类时没有定义构造
25
实现封装
• 封装的实现:
1、修改属性的可见性来限制对属性的访问
2、为每个属性创建一对赋值(setter)方法和取值(getter) 方法,用 于对这些属性的访问
public class Teacher { private String name; // 教员姓名 //年龄 1 private int age;
import 包名. 类名;
1、系统包(eg:java.lang) 2、自定义包:com.qiuxueke
*: 指包中的所有类 Test:指包中的Test类
封装,就是隐藏实现细节
什么是封装
将属性私有化,提供公有方法访问私有属性 通过这些公有方法访问私有属性
public class Teacher { private String name; // 老师姓名 // 返回教员姓名 public String getName() { return name; } // 设定老师姓名 public void setName(String name) { this.name = name; } } this代表当前类的实例 通过setter、getter方法 Teacher teacher = new Teacher(); 访问name属性 teacher.setName ("李芳"); String tName = teacher.getName();
public class College { //定义属性 String name; String address; // 学校全称 //学校地址
int teacherNum;
// 定义方法 public String toString() {
//教职员工的数目
return name + “ 位于 ”+ address + “目前共有教职员工数:“ + teacherNum + “个"; } }
Fra Baidu bibliotek
如何创建和使用对象
• 使用对象的步骤:
– 使用new创建类的一个对象
College college1= new College();
– 使用对象:使用“.”进行以下操作
• 给类的属性赋值:对象名.属性 • 调用类的方法:对象名.方法名()
college1.name = “浙江大学"; college1.toString(); //给属性赋值 //调用类的方法,该方法中的操作将被执行
包 A.java
允许类组成较小的单元(类似 文件夹),易于找到和使用相 应的文件 防止命名冲突
更好的保护类、数 据和方法
如何创建包
使用package声明包, 以分号结尾 如果有包的声明,一定 作为Java源代码的第一条 语句
package chapter5.code ; public class Test{ …… public String toString(){ …… } }
上节课回顾
• 流程控制
顺序结构 分支结构 循环结构 循环控制 • 数组 声明、赋值和初始化 数组的遍历
数组的应用
本课目标
• 类的定义
• 对象的定义和使用(重点)
• 方法的定义和使用(重点)
• 构造函数(重点)
• this关键字
• 方法参数传递(难点)
• 包
• 访问修饰符
类的定义
public class 类名 {
课间休息
为什么需要包
• 生活案例
文档分门别类,易于查找
易于管理
不同内容的文档可以放在不同的 袋子中,拥有相同的名字,避免冲突
为什么需要包
树形文件系统
使用目录解决文件同名冲突问题
如何存放两个同名的类而不冲突?
插入排序 Sort.java 冒泡排序 Sort.java
包
• 包——解决类的同名问题
}
private String name; // 姓名 // 构造方法 public Teacher() { name = “张三"; }
28
带参数的构造方法
• 通过带参数的构造方法,显式地为实例变量赋予初始值
public class Teacher{ private String name; // 姓名 private int age; // 年龄 private String education; // 学历 private String position; // 职位 // 带参数的构造方法 public Teacher(String name,int age,String education,String position) { this.name = name; this.age = age; this.education = education; this.position = position; } public String introduction() { return "大家好!我是" + name + ",我今年" + age + "岁, 学历" + education + ",目前职位是"+position; } }
演示示例:使用MyEclipse创建包和类
包与目录的关系
• 创建好的包和Java源文件是如何存储的?
– 创建包com.qiuxueke.chapter7,即创建了目录结构:
..\com\qiuxueke\chapter7
src com qiuxueke chapter7 Test1.java Test2.java
– 可以包括数字,但不能以它开头
• 遵循的命名规范
– 通常方法名是一个动词,如果有两个以上单词组成,
第一个单词的首字母小写,其后单词首字母大写
方法的返回值
• 两种情况
– 如果方法具有返回值,方法中必须使用关键字return返回该值,返回类 型为该返回值的类型 return 表达式; – 如果方法没有返回值,返回类型为void public class Student{ String name = "张三"; public void getName(){ return name; } ……
带参数的构造方法
• 通过调用带参数的构造方法,简化对象初始化的代码
public class TeacherTest { public static void main(String[] args) { Teacher teacher = new Teacher("李芳", 23, “本科”, “销售助理"); System.out.println(teacher.introduction()); } 创建对象时,一并完成了对 } 象成员的初始化工作 大家好!我是李芳,我今年23岁,学历本科,目前职位是销售助理
package com.qiuxueke.depart.project; 部门名 项目名
• 自己设定的包名部分依不同机构各自内部的规范不同而不同
用MyEclipse 创建包
• 使用MyEclipse创建包的两种方法:
– 分别创建包和类:
• 创建项目→创建包→创建类
– 创建类的过程中创建类所在的包
• 创建项目→创建类(在此过程中声明所属包,如无声明, 则显示“缺省包”)
2
}
public int getAge() { return age; } public void setAge(int age) { this.age = age; } //此处省略对name属性的setter、getter方法
26
访问修饰符
什么是构造方法
• 构造方法负责对象成员的初始化工作,为实例变量赋予 合适的初始值
方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器
不执行任何代码。 • (5)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
小结
Java 基础课程 第五章 类和对象
简介 版权声明
本课件由网新(天津)软件有限公司(以下简称:网新天津)编制,仅供网新仿真实训的学 员学习使用; 网新天津享有本课件中的文字叙述、文档格式、插图、照片等所有信息资料的版权,受知 识产权法及版权法等法律、法规的保护。任何个人或组织未经网新集团的书面授权许可, 均不得以任何形式使用本课件的任何内容,否则将视为不法侵害,网新天津保留追究侵权 人相关法律责任的权利
创建和使用对象示例
创建“浙江大学”对象
public class InitialCollege { 说一说看到 什么效果?
public static void main(String[ ] args){ College college1= new College(); System.out.println(college1); 调用类的toString()方法是特 college1.name = “浙江大学"; 例:这里使用 college1.address = “浙江杭州西溪路”; college1.toString()和 college1.teacherNum = 10000; ccollege1作用相同 ———更简便 System.out.println(college1); 演示示例:创建和使用对象
• 构造方法必须满足以下语法规则:public class Teacher {
1、方法名与类名相同 2、没有返回类型 使用new关键字调用构造方法
public class TeacherTest { public static void main(String[ ] args) { Teacher teacher = new Teacher(); } }
}
}
综合案例
• 编写学生类,输出学生相关信息 • 编写教师类,输出教师相关信息
学生类 属性: 姓名 name 年龄 age 参加的课程 course 兴趣 interest 方法: 显示学生个人信息 老师类 属性: 姓名 name 专业方向 major 教授的课程 course 教龄 schoolAge 方法: 显示老师个人信息
演示示例:创建和使用类和对象
方法的定义
• 方法就是类所具有的行为和功能
[访问修饰符] [其他修饰符] 返回类型|void 方法名([参数列表]) { //编写方法体 }
1)无返回类型无参数
2)无返回类型有参数 3)有返回类型无参数 4)有返回类型有参数
方法的命名
• 如何给方法起名字? – 必须以字母、‘_’或‘$’开头
演示示例:在包资源管理器和导航器中观察包中的目录结构
如何导入包
• 为了使用不在同一包中的类,需要在Java程序中 使用import关键字导入这个类
import java.util.*; import java.io.*; //导入java.util包中所有类 //导入java.io包中所有类 关键字import并不陌生
包名
包命名规范
• 包名由小写字母组成,不能以圆点开头或结尾
package mypackage; package .mypackage; × package net.javagroup.mypackage;
• 自己设定的包名之前最好加上唯一的前缀,通常使用组织倒 置的网络域名。如:域名qiuxueke.com
编译错误
}
返回类型要匹配
方法调用
• 方法是个“黑匣子”,完成某个特定的应用程序 功能,并返回结果
• 方法调用:执行方法中包含的语句
对象名.方法名();
小结
• 编写一个音乐类,添加歌名,类别,歌手,时长属性,添加 播放,暂停/继续播放,停止等方法,并编写测试类显示音 乐信息 • 编写一个手机类,添加手机型号,颜色,品牌属性,添加打 电话,发短信,拍照方法,并编写测试类显示手机信息