类与对象
这是作者第一次在CSDN上写博客,因为目前正在从零学习Java(之前仅有微薄的C++基础),希望通过每节课的学习,最后写一篇技术博客出来,达到对知识的良好梳理与总结,进而锻炼个人水平。本人目前就读于中南大学资源与安全工程学院,非科班出身。但我认为IT行业更注重实力,希望能通过自己不懈的努力在编程方面取得成就。由于目前水平有限,且是第一次写博客,可能排版,代码安排不太美观,文章中也可能有疏漏,不足处,还望批评指正(手动抱拳)。(注:本系列文章所使用的环境均为eclipse)
本文是第一谈:类与对象。
首先,我们来定义一下对象,那便是具有一定属性与特征的事物,是一个具体的实体/事物。比如说,我们面前桌子上的水杯,我们面前的这台电脑…它具有一定的属性(水杯可用来装水,电脑可用来编程,游戏,社交等等),和一定的特征(是“我们”面前的,可盛水的类似容器的水杯,是“我们”面前的电脑)。这个概念本身很简单。而我们要做的就是把不同的对象归为一个类,把具有相同属性与特征的事物放在一个类里面,对它们进行整体的处理。通常来讲,一个类是具有相同特征和属性的对象的集合。
在Java中,类的定义格式为public class 类名{}
,一般在创建类之后,类会自动定义好。
类中属性的定义格式为public 属性类型 属性名;
类中方法的定义格式为public 方法返回值类型 方法名(参数类型 参数名...){方法体}
对象的定义格式为类名 对象名 = new 类名();
对象的属性使用:对象名.属性名;
对象的方法使用:对象名.方法名(参数值…)
介绍了这些,我们先来分析一个例子:
学生小明在学习心理健康课程,每次学习让心理健康课程的课时减少1,重复,直到心里健康课程的课时减少0,学习完成,小明的学分增加心里健康课程的学分。
整体思路:
第一步: 分析场景中有哪些对象?
学生小明、 心里健康课程
第二步:分析场景中对象有哪些属性和方法
学生小明:
属性:学分、姓名
方法:学习
心理健康课程:
属性: 课时、学分、课程名
方法:
第三步:创建类
第四步:在主方法中创建对象,给对象的属性赋值,按照场景调用方法
本人将代码分为三个板块:学生类、课程类、主函数。
学生类部分代码:
package object;
public class Student {
//学分、姓名
public int score;
public String name;
//学习
//参数:课程对象
public void study(Course c) {
//课程的课时减少1
c.hours--;
//输出 谁在学习什么课程,还剩多少课时完成学习
System.out.println(name+"在学习"+c.name+"课程,还剩"+c.hours+"个课时完成学习!");
//判断是否完成学习
if(c.hours == 0) {
//自己的学分增加课程的学分
score += c.score;
//输出 谁完成了什么课程的学习,获得多少个学分,现在的学分是多少
System.out.println(name+"完成了"+c.name+"课程的学习,获得"+c.score+"个学分,现在的学分是:"+score+"。");
}
}
}
课程类部分代码:
package object;
public class Course {
//课时、学分、课程名
public int hours;
public int score;
public String name;
}
主函数部分代码:
package object;
public class Mainer {
//主方法
public static void main(String[] args) {
//创建学生对象
Student xiaoming = new Student();
//给学生的属性赋值
xiaoming.name = "小明";
xiaoming.score = 5;
//创建课程对象
Course xinli = new Course();
//给课程对象的属性赋值
xinli.name = "心理健康";
xinli.hours = 10;
xinli.score = 5;
//课程的课时大于0,则重复学习
while(xinli.hours > 0) {
//学生学习课程
xiaoming.study(xinli);
}
}
}
这是运行结果:
根据本节我们可以做一个练习:美国队长和钢铁侠互相PK,采用回合制,每次攻击让对方的血量减少攻击方的攻击值,直到某一方的血量小于等于0
输出:战斗的过程、结果
整体思路:
第一步: 分析场景中有哪些对象?
第二步:分析场景中对象有哪些属性和方法
第三步:创建类
第四步:在主方法中创建对象,给对象的属性赋值,按照场景调用方法
我定义了三个板块:钢铁侠类、美国队长类、主函数。
钢铁侠类部分代码:
package 练习;
public class man {
public int blood;
public int demage;
public String name;public void PK(team A)
{
A.blood--;
System.out.println(name+"对"+A.name+"造成了"+demage+"点伤害,"+A.name+"此时的血量为:"+A.blood);
}
}
美国队长类部分代码:
package 练习;
public class team {
public int blood;
public int demage;
public String name;
public void PK(man a)
{
a.blood--;
System.out.println(name+"对"+a.name+"造成了"+demage+"点伤害,"+a.name+"此时的血量为:"+a.blood);
}
}
主函数类部分代码:
package 练习;
public class PK {
public static void main(String[] args)
{
team US = new team();
man iron=new man();
iron.demage=1;
US.demage=2;
iron.blood=10;
US.blood=15;
iron.name="钢铁侠";
US.name="美国队长";
while(US.blood>0&&iron.blood>0)
{
if(US.blood==0)
break;
else
iron.PK(US);
if(iron.blood==0)
break;
else
US.PK(iron);
}
if(US.blood==0)
System.out.println("钢铁侠获胜!");
if(iron.blood==0)
System.out.println("美国队长获胜!");
}
}
这是运行结果:
以上是本次全部内容。
2019.06.29
笔者于湖南长沙