JAVA面向对象-类和对象
前言
面向对象是java语言编程的特征,也是它好用的关键。学习起来并不困难,只是需要理解
学习之前,我们需要了解自己能否进行现在的学习
先阅读必备技能 :必备基础
1、什么是对象
1.1、事物和对象
世界由各种事物组成
现实生活中有那些事物
举例:
现实生活中是叫事物
编程中叫对象
1.2、对象的特征
对象有许许多多的特征
比如:你们的对象
1、静态特征(元素):
身高:,体重: --》属性名:属性值
2、动态特征(行为):会吃饭,睡觉,举高高 --》方法
1.3、对象的定义
用来描述客观事物的一个实体
由一组属性和方法构成
2、什么是类
2.1、类的定义
类是模子,定义对象将会拥有的特征(属性)和行为(方法)
2.2、举例一些类
人类:总结一下所有人哪些共有的标签
哪些共有的行为
2.3、类和对象的关系
类是对象的抽象,对象是类的具体
类中有属性,方法 --》
对象有属性,具体的属性值
对象有方法,对应的执行
3、类的组成
类由对象抽象出来的属性和方法组成
属性:属性类型,属性名组成
方法:构造方法+行为方法组成
4、创建类及创建对象
4.1、类的模板
public class [类名]{
//属性
[属性类型] [属性名];
//构造方法 特殊的方法
//无参的
public [类名](){}
//有参的
public [类名](变量 变量名){
this.[属性名] = [变量名];
}
//行为方法
//无参
public [返回值] [方法名](){
//方法体
}
//有参
public [返回值] [方法名](变量 变量名){
//方法体
}
}
4.2、创建的规范
- 类名
- 首字母大写(区分于变量名)
- 有意义(Person/Animal)
- 属性
- 变量名的规范
- 属性类型
- 方法
- 方法名首字母小写(构造除外)
4.3、编写类的步骤
定义类名---》编写类的属性---》编写类的方法
4.3.1、演示一Student
先看对象:
属性名/方法 | 属性值/方法名 |
---|---|
学号 | |
名字 | |
身高 | |
体重 | |
方法 | 自我介绍 |
抽象出类--》学生
类名:Student
属性:
sNo
name
height
weight
方法
ShowInfo() 自我介绍
public void Student{
int sNo;
String name;
double height;
double weight;
public void showInfo(){
System.out.print("我是"+this.name)
}
}
4.3.2、对象的创建(类的实例化)
字符串的创建:
//创建一
String s1 = "hello world!!!";
//创建二
String s2 = new String("hello wrold!!!");
String 特殊可以直接赋值
而大部分对象只能使用第二中创建方式
//对象创建
Student zhangsan = new Studebt();
//引用对象成员:使用“.”进行以下操作
zhangsan.name = "张三";//给对象属性赋值
zhangsan.showInfo();//调用对象方法
练习:
1、创建手机类
2、创建电脑类
要求:总结出2-3个属性 有一个方法 (20min)
4.4、类成员详解
4.4.1、构造方法
构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:
1.构造方法作用:
(1).构造出来一个类的实例
(2).对构造出来一个类的实例(对象)初始化。
2.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
3.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。
4.类中必定有构造方法,若不写,系统自动添加无参构造方法。
5.构造方法分为两种:无参构造方法 有参构造方法
-
无参构造
- 特点:没有参数
-
有参构造
- 特点:需要有参数,1-n
- 对象使用New创建的时候,在类名后的()中填写属性
4.4.2、方法
方法的模板:
[修饰符] [返回值] [方法名]([参数1]、[参数2]...){
//方法体
}
- 修饰符
- public
- 默认
- private
- protected
演示
-
返回值
- 方法的返回值是指方法被调用之后,执行方法体中的代码所得到的结果,这个结果通过 return 语句返回。
- void代表空值,不需要返回值
- return关键字
- 作用1:返回结果
- 作用2:跳出方法
-
参数
- 当方法中需要外部变量的时候,使用参数传进方法
4.4.3、作用域
在类中的变量分为全局变量和局部变量,我们来分析一下
1、成员变量/局部变量
全局变量是直接定义在类中的
顾名思义是作用于全局的变量,但是我们要明白,这里的全局是什么意思
这里全局的意思是这整个对象中。一个对象从创建开始,这个变量会一直存在,
不管最后这个变量的值最后变成什么,这个变量的引用会一直存在。
2、局部变量
变量定义在类中的方法里都是局部变量。
随着方法的调用被创建,方法调用结束也就结束
3、举例:
public class Person{
String name;//成员变量
public void test(){
String name = "张三";//局部变量
}
}
4.4.5、方法的重载(444不太吉利)
定义:同一个事物,在做一件事情的时候,因为条件的不同,进行不同的操作。不同不仅仅是类别、数量,还有顺序
程序上:
- 两个方法,方法名相同,返回值相同,但是参数不同:类型、数量、顺序不同
- 方法体进行了更改,也就是执行了不同的操作
public class person{
//输出吃的什么
public void eat(String food){
System.out.println("我吃的是"+food);
}
//输出时间段吃的什么
public void eat(String food,String time){
System.out.println("我"+time+"吃的是"+food);
}
}
好处:
- 反映了随机应变的理念,更加符合面向对象
- 比如:做饭的时候。做饭这个事情,做出来什么菜,取决于食材是什么,食材的多少。
5、项目总结
综合练习:人机猜拳
任务
- 完成人机猜拳互动游戏的开发
主要功能
- 选取对战角色
- 猜拳
- 记录分数
项目效果
5.1、阶段1:分析业务,创建用户类
需求说明
- 分析业务,抽象出类、类的特征和行为
- 创建用户类
5.2、阶段2:创建计算机类
需求说明
-
创建计算机类Computer
-
实现计算机出拳
提示
- 产生一个1~3的随机数,
模拟计算机的出拳结果
例如,产生2,显示“电脑出拳:石头”
5.3、阶段3:创建游戏类,选择对战对手
需求说明
-
创建游戏类Game
-
编写游戏类的初始化方法initial()
-
编写游戏类的开始游戏方法startGame()
5.4、阶段4:实现一局对战
需求说明
- 分别调用用户类和计算机类的出拳方法showFist(),接受返回值并比较,给出胜负结果
5.5、阶段5:实现循环对战,并累计得分
需求说明
- 实现循环对战
- 累加赢家的得分
5.6、阶段6:显示对战结果
需求说明
- 游戏结束后,显示对战结果
提示
- 编写showResult( )方法,
比较二者的得分情况,
给出对战结果
5.7、阶段7:完善游戏类的startGame()
需求说明
- 输入并保存用户姓名,游戏结束后显示双方的各自得分