类与对象是Java学习过程中最基本的一步,可以说没有类与对象就没有Java。
迄今为止,没有哪一本书给出了关于“类与对象”的详细定义,我们可以类比一下现实生活中的概念来理解程序设计中的“类与对象”。
1、什么是对象?
现实中的对象:小明的手机、小白的电脑、某一把椅子、这本书......可以说,你所能看到的或者想到的一个具体的事物都能被称为对象。
再深入一步,研究某一个具体的对象,比如某一台电脑,我们该如何描述它呢?如何将它与其它的电脑区分开呢?这就涉及到对象的属性。
某一台电脑:
特征:尺寸、颜色、内存、价格、重量、显卡、CPU、保修期......
功能:输入、输出、开机、计算、传输信息......
某一个人:
特征:姓名、性别、籍贯、年龄、属相、星座、身高、体重、性格、爱好......
行为:吃、喝、跑、走、跳、睡......
2、什么是类?
现实中的类:
我们把具有相似功能(行为/用途)和相似特征的对象划分为一个类。
程序设计中的类:
程序中的类是根据现实生活中的对象的特征和行为进行的抽象定义,定义的时候必须按照固定格式进行定义。
程序中的类根据两个部分组成:
(1).属性 根据对象的特征进行定义的
(2).方法(函数) 根据对象的行为/功能进行定义的
3、类的格式:
public class 类名{
//属性的定义
public 数据类型 属性名;
//方法(函数)的定义
public 返回值数据类型(不返回则写void) 函数(数据类型 参数名...){
}
}
Java中类是模板,是基本单位,不能用类名去调用属性和函数,若想调用属性和函数,必须要先实例化对象,然后根据对象名调用属性和函数。函数()里的数据类型可以为类名,参数名可以为对象名。
4、实例化对象和调用属性函数的格式:
实例化对象关键字:new
格式:
类名 对象名=new 类名()
调用属性和函数:
对象名.属性
对象名.函数名(参数值...)
5、例1 张三在学习Java课程中,学完该课程后,张三的学分要增加3分。
(1)找出例子中的对象以及对象的行为特征:
张三:
特征:姓名、学分
行为:学习(Java课程)、学分增加
Java课程:
特征:名称、学分、课时
无行为
(2)根据对象的特征行为,按照类的固定模式定义类:
有两个对象,则需要定义两个类,张三定义为Student学生类,Java课程定义为Subject课程类。
(3)定义主函数的类。在主函数中进行实例化,调用对象的属性函数。
Student.java
//定义Student学生类
public class Student{
//定义学生类的属性
public String name;
public int score;
//定义学生类的函数
public void study(Stubject sub){
sub.time--;
System.out.println(name+"所学习的"+sub.name+"剩余课时数为"+sub.time);
if(sub.time<=0)
score=score+sub.score;
System.out.println(name+"所获得的学分为"+score);
}
}
Subject.java
//定义Subject课程类
public class Subject{
public String name;
public int score;
public int time;
}
Manager.java
//定义主函数,在主函数中实例化,调用属性和函数
public class Manager{
public static void main(String []args){
Subject sub=new Subject();
sub.name="Java课程";
sub.score==3;
sub.time==10;
Student stu=new Student();
stu.name="张三";
stu.score==0;
while(time>0){
stu.study(sub);
}
}
}
例2 回合制对战游戏:奥特曼和小怪兽进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!
奥特曼:
特征:姓名、血量
行为:(与小怪兽)PK、血量减少
小怪兽:
特征:姓名、血量
行为:(与奥特曼)PK、血量减少
Aoteman.Java
//定义奥特曼类
public class Aoteman{
public String name;
public int blood;
public void PK(Monster mons){
mons.blood--;
System.out.println(name+"攻击"+mons.name+","+mons.name+"剩余血量为"+mons.blood+"点");
}
}
Monster.java
//定义小怪兽类
public class Monster{
public String name;
public int blood;
public void PK(Aoteman mons){
mons.blood--;
System.out.println(name+"攻击"+mons.name+","+aote.name+"剩余血量为"+aote.blood+"点");
}
}
Manager.java
//定义主函数,实例化对象,调用属性和函数
public class Manager{
public static void main(String [] args){
Aoteman aote=new Aoteman();
aote.name="奥特曼";
aote.blood=10;
Monster mons=new Monster();
mons.name="小怪兽";
mons.blood=8;
while(aote.blood>0&&mons.blood>0){
aote.PK(mons);
mons.PK(aote);
}
if(aote.blood==0)
System.out.println(mons.name+"胜利!");
else
System.out.println(aote.name+"胜利!");
}
}