类和对象
=name;
this.age=age; }
带参构造方法this关键字 是对一个对象的默认引用, 这里用以区分同名成员变量
演示示例:构造方法使用
42 / 55
this的用法
this关键字的用法
调用属性
this.health = 100;
= "大黄";
调用方法
对象名.addName(String "张三");
注意 调用方法时不能指定实参类型!
31 / 55
常见错误2-2
代码阅读
//方法定义
public boolean searchName(int start ,int end ,String name){ //方法体 } //方法调用 String s="开始"; int e=3; String name="张三"; boolean flag=对象名. searchName(s ,e ,name);
演示示例:创建和使用对象
21 / 55
课堂练习
需求说明
编写学员类,输出学员相关信息 编写教员类,输出教员相关信息
完成时间:7分钟 共性问题集中讲解
22 / 55
创建和使用对象进阶
问题
一个景区根据游人的年龄收取不同价格的门票 。请编写游人类,根据年龄段决定能够购买的 门票价格并输出
演示示例:输出门票价格
…
属性n的类型 属性n; 成员方法
//定义方法部分
方法1; …
定义类的步骤: (1)定义类名 (2)编写类的属性 (3)编写类的方法
方法m;
}
演示示例:创建School类
19 / 55
类图
使用类图描述类
用于分析和设计“类” 直观、容易理解
类名
属性名
Dog + name:String 类型
7 / 55
万物皆对象
世界是由什么组成的?
8 / 55
万物皆对象
世界是由什么组成的?
名胜 人
动物 ,植物……
物品
分类是人们认识世界的一个很自然的过程,在 日常生活中会不自觉地进行分类
9 / 55
身边的对象
张浩 李明
顾客 姓名—张浩 年龄—20 体重—60kg 操作: 购买商品
收银员
员工号—10001 姓名—李明 部门—财务部
this.print();
调用构造方法
this();
观察之前编写过的方法,都是无参方法
27 / 55
为什么要用带参数的方法
工作原理
输 出 三 种 果 汁
新鲜苹果汁
新鲜桃汁
新鲜梨汁
28 / 55
如何使用带参数的方法
定义带参数的方法
<访问修饰符> 返回类型 <方法名>(<形式参数列表>) {
//方法的主体
}
调用带参Байду номын сангаас的方法
对象名.方法名(参数1, 参数2,……,参数n)
性和方法构成
12 / 55
对象的属性和方法
提问
列出尼古拉斯·凯奇驾驶的这辆法拉利F360
Spider的属性和方法
属性: 品牌:法拉利 型号:F360 Spider 颜色:黄色 价格:380万元 方法: 发动 停止 加速
列出小狗对象的属性和方法
属性: 颜色:白色 方法: 叫 跑 吃
13 / 55
//初始化代码
}
方法名与类名相同
可以指定参数
作用
对象初始化
系统提供默认无参构造方法
41 / 55
构造方法重载
构造方法重载
自定义构造方法
方法名相同 参数项不同 与返回值、访问修饰符无关
方法重载
此时系统不再提供默认无参构造方法
public Student(){}
public Student(String name,int age){
类是抽象的概念,仅仅是模板
比如说:“人”
对象是一个你能够看得到、摸得着的具体实体
“人”类 特征(属性)
年龄 体重
小布什
普京
克林顿 ……
行为(方法)
衣 食 住 行
17 / 55
Java 是面向对象的语言
所有Java程序都以类class为组织单元 关键字class定义自定义的数据类型
public class HelloWorld {
“+”:public “-”:private
+ health:int
+ love:int
+ strain:String
+ print( ) : void 方法名 参数: 名字:类型,名字:类型 返回值类型
20 / 55
如何创建和使用对象
使用对象的步骤
创建对象
类名 对象名 = new 类名();
请回忆:如何定义一个方法?
public void show(){ System.out.println("姓名:" + name + ",密码:" + password); } public 返回值类型 方法名() {
(1)驼峰命名规则 (2)有意义
//这里编写方法的主体
}
25 / 55
方法的返回值
教室里的对象
提问
说一说教室里的对象,描述它们的属性和方法是 什么?
网络
14 / 55
类和对象
学生对象 姓名—张浩 年龄—20 体重—60kg 操作: 学习 ……
抽取
学生类 姓名 属性 年龄 体重 操作: 学习 方法 ……
学生对象 姓名—李明 年龄—21 体重—62kg 操作: 学习 ……
15 / 55
带参构造方法 Student stu1=new Student("张三",40); Student stu2=new Student("李四",90);
="李四";
s2.score=90;
stus[0]=s1;
stus[1]=s2;
……
40 / 55
构造方法
构造方法
访问修饰符 构造方法名 ( ) { 无返回值类型
实参列表
演示示例:带参方法
29 / 55
带多个参数的方法
问题
使用带参方法实现学员信息管理
增加学员姓名 在保存了多个学生姓名的数组中,指定查找区间,查 找某个学生姓名并显示是否查找成功
演示示例:带多个参数的方法
30 / 55
常见错误2-1
代码阅读
//方法定义 public void addName(String name){ //方法体 } //方法调用
面向功能划分软件结构 自顶而下 最小的子系统是方法 制约了软件的可维护性和可扩展性
面向对象开发
把软件系统看成各种对象的集合 系统结构较稳定 子系统相对独立 软件可重用性、可维护性和可扩展性强
面向对象程序设计(Object Oriented Programming,OOP)
如果方法没有返回值,返回值类型为void
26 / 55
方法调用
方法之间允许相互调用,不需要知道方法的具体 实现,实现重用,提高效率
情况
Student类的方法a( )调用Student 类的方法b( ),直接调用
举例
public void a( ) { b( ); //调用b( ) }
public void a( ) { Student类的方法a( )调用Teacher Teacher t = new Teacher( ); 类的方法b( ),先创建类对象,然后 t.b( ); //调用Teacher类的b() 使用“.”调用 }
类和对象
学生对象 姓名—张浩 年龄—20 体重—60kg
学生类 姓名 操作: 属性 年龄 类:具有相同属性和方法的一组对象的集合 学习 抽取 体重 …… 类是对象的抽象,对象是类的具体 学生对象 姓名—李明 年龄—21 体重—62kg 操作: 学习 …… 操作: 学习 方法 ……
16 / 55
类和对象的关系
注意 形参和实参数据类型不一致!数量也要一致!
32 / 55
方法传参
以下代码输出结果是什么?
public class Test {
public void calc1(int num){ num=num+1; } public void calc2(Student student){ //测试类
Test test=new Test();
School center = new School();
引用对象成员:使用“.”进行以下操作
引用类的属性:对象名.属性 引用类的方法:对象名.方法名()
= "北京中心"; //给name属性赋值 center.showCenter(); //调用showCenter()方法
public static void main(String[] args){
System.out.println("Hello World!!!"); } }
18 / 55
Java类模板
类将现实世界中的概念模拟到计算机程序中
语法
成员变量 public class 类名 {
//定义属性部分 属性1的类型 属性1; 类名首字母大写
int n=8; test.calc1(n); Student stu=new Student(); stu.age=18;