在面向对象程序设计中,类是一个抽象的概念,描述的是一类事物的完备信息,它将具有相同属性和行为(方法)的对象组成一个集合。类在现实生活中类似于蓝图或者模板,根据蓝图或者模板可以创造出具体的事物。例如:学生是一个类,具体某个学生张三就是该类中的一个对象。由此可见,类是Java程序的基本要素,并且所有的内容都必须要依赖于类才能存在。
生活中也有类和对象。现实生活中只要是具体的一个物体或者具体的一件事情就是一个对象,也即是你眼睛所看到的任何一个物体,所想所做的任何一个事情都是一个对象。而根据对象相似的特征和相似的行为(方法)进行归类便可以形成一个个抽象的类。然而Java程序中的类是根据生活中对象(类)的特征和行为(功能)按照一种固定格式进行的定义的模板,通过这个模板我们可以建立多个具有不同属性和不同行为(方法)的对象。
Java程序中的类含有两个部分,属性(变量),方法(函数),定义类的格式如下:
public class 类名 {
//属性的格式
访问修饰符 数据类型 属性名;
//方法的格式
访问修饰符 返回值类型 方法名([数据类型 参数名,...]){
//代码
}
}
接下来我们看一个实例:回合制对战游戏:奥特曼和小怪兽要进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!
首先找出所有的对象,然后根据对象定义类,最后再写一个主函数,创建对象并调用方法。
1.对象
奥特曼
特征:姓名,攻击力,血量
行为:设置姓名,获取姓名,设置攻击力,获取攻击力,设置血量,获取血量,攻击小怪兽
小怪兽
特征:姓名,攻击力,血量
行为:设置姓名,获取姓名,设置攻击力,获取攻击力,设置血量,获取血量,攻击奥特曼
2.定义类,属性和方法
有几个对象就定义几个类
3.类:主函数中:创建对象和调用方法
创建奥特曼类:
public class Aoteman{
private String name;
private int strength;
private int blood;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setStrength(int strength){
this.strength=strength;
}
public int getStrength(){
return strength;
}
public void setBlood(int blood){
this.blood=blood;
}
public int getBlood(){
return blood;
}
public void flight(Xiaoguaishou x){
x.setBlood(x.getBlood()-getStrength());
System.out.println(x.getName()+"被"+name+"攻击了,剩余的血量是"+x.getBlood());
if (x.getBlood()<=0)
System.out.println(name+"胜利了");
}
}
创建小怪兽类:
public class Xiaoguaishou{
private String name;
private int strength;
private int blood;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setStrength(int strength){
this.strength=strength;
}
public int getStrength(){
return strength;
}
public void setBlood(int blood){
this.blood=blood;
}
public int getBlood(){
return blood;
}
public void flight(Aoteman a){
a.setBlood(a.getBlood()-getStrength());
System.out.println(a.getName()+"被"+name+"攻击了,剩余的血量是"+a.getBlood());
if (a.getBlood()<=0)
System.out.println(name+"胜利了");
}
}
写主函数,创建对象调用方法:
public class Flight{
public static void main(String[] args){
Aoteman a=new Aoteman();
a.setName("奥特曼");
a.getName();
a.setStrength(10);
a.getStrength();
a.setBlood(60);
a.getBlood();
Xiaoguaishou x=new Xiaoguaishou();
x.setName("小怪兽");
x.getName();
x.setStrength(10);
x.getStrength();
x.setBlood(50);
x.getBlood();
while(a.getBlood()>0&&x.getBlood()>0)
{a.flight(x);
x.flight(a);}
}
}
构造方法是用来实例化对象,给属性赋初始值。当用new创建一个对象的时候构造方法就会被调用。在一个类中如果没有定义任何构造方法,系统就会为该类自动创建一个无参的构造方法,且方法体中没有任何语句,而当显式定义类的构造方法后,系统就不再自动创建默认的构造方法。
构造方法是一个特殊的方法。Java中的每个类都有构造方法,用来初始化该类的一个对象的构造方法具有和类名相同的名称,而且不返回任何数据类型,构造方法一般都用public类型类修饰,这样才能在任意的位置创建类的实例。构造方法每使用一次就会创建一个新对象,而普通方法只要调用的对象不变,那么还是同一个方法。
方法重载就是在同一个类或者父子类之间创建同名的多个方法,这些方法有不同的参数列表,所谓不同的参数列表及时指方法所带的参数个数,参数类型,参数顺序至少要有一个不同。
this表示的是当前调用方法的对象,类似于生活中的"我"。
接下来看一个实例:奥特曼和小怪兽要进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!胜利的一方满血复活。胜利的一方要和Boss进行PK,直到一方的血量为0时结束战斗,输出谁胜利了!
首先创建奥特曼类并重载攻击方法,因为奥特曼不止要攻击小怪兽,如果他赢了还要攻击Boss(并采用随机数生成攻击力,使得结果具有不确定性):
public class Aoteman{
private String name;
private int strength;
private int blood;
java.util.Random rand = new java.util.Random();
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setStrength(int strength){
this.strength=strength;
}
public int getStrength(){
return strength;
}
public void setBlood(int blood){
this.blood=blood;
}
public int getBlood(){
return blood;
}
public void flight(Xiaoguaishou x){
x.setBlood(x.getBlood()-rand.nextInt(getStrength()));
System.out.println(x.getName()+"被"+name+"攻击了,剩余的血量是"+x.getBlood());
if (x.getBlood()<=0)
System.out.println(name+"胜利了");
}
public void flight(Boss b){
b.setBlood(b.getBlood()-rand.nextInt(getStrength()));
System.out.println(b.getName()+"被"+name+"攻击了,剩余的血量是"+b.getBlood());
if (b.getBlood()<=0)
System.out.println(name+"胜利了");
}
}
接着创建小怪兽类和Boss类,具体方法和创建奥特曼类相似:
public class Xiaoguaishou{
private String name;
private int strength;
private int blood;
java.util.Random rand = new java.util.Random();
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setStrength(int strength){
this.strength=strength;
}
public int getStrength(){
return strength;
}
public void setBlood(int blood){
this.blood=blood;
}
public int getBlood(){
return blood;
}
public void flight(Aoteman a){
a.setBlood(a.getBlood()-rand.nextInt(getStrength()));
System.out.println(a.getName()+"被"+name+"攻击了,剩余的血量是"+a.getBlood());
if (a.getBlood()<=0)
System.out.println(name+"胜利了");
}
public void flight(Boss b){
b.setBlood(b.getBlood()-rand.nextInt(getStrength()));
System.out.println(b.getName()+"被"+name+"攻击了,剩余的血量是"+b.getBlood());
if (b.getBlood()<=0)
System.out.println(name+"胜利了");
}
}
public class Boss{
private String name;
private int strength;
private int blood;
java.util.Random rand=new java.util.Random();
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setStrength(int strength){
this.strength=strength;
}
public int getStrength(){
return strength;
}
public void setBlood(int blood){
this.blood=blood;
}
public int getBlood(){
return blood;
}
public void flight(Aoteman a){
a.setBlood(a.getBlood()-rand.nextInt(getStrength()));
System.out.println(a.getName()+"被"+name+"攻击了,剩余的血量是"+a.getBlood());
if (a.getBlood()<=0)
System.out.println(name+"胜利了");
}
public void flight(Xiaoguaishou x){
x.setBlood(x.getBlood()-rand.nextInt(getStrength()));
System.out.println(x.getName()+"被"+name+"攻击了,剩余的血量是"+x.getBlood());
if (x.getBlood()<=0)
System.out.println(name+"胜利了");
}
}
最后写主函数,创建对象并调用攻击方法:
public class Flight{
public static void main(String[] args){
Aoteman a=new Aoteman();
a.setName("奥特曼");
a.getName();
a.setStrength(10);
a.getStrength();
a.setBlood(50);
a.getBlood();
Xiaoguaishou x=new Xiaoguaishou();
x.setName("小怪兽");
x.getName();
x.setStrength(10);
x.getStrength();
x.setBlood(50);
x.getBlood();
Boss b=new Boss();
b.setName("Boss");
b.getName();
b.setStrength(10);
b.getStrength();
b.setBlood(50);
b.getBlood();
while(a.getBlood()>0&&x.getBlood()>0){
a.flight(x);
x.flight(a);
}
if(a.getBlood()<=0&&x.getBlood()>0){
x.setBlood(50);
while(x.getBlood()>0&&b.getBlood()>0)
{x.flight(b);
b.flight(x);}}
else if(x.getBlood()<=0&&a.getBlood()>0){
a.setBlood(50);
while(a.getBlood()>0&&b.getBlood()>0)
{a.flight(b);
b.flight(a);}
}
}
}
- 大小: 9.4 KB
- 大小: 33 KB
- 大小: 30.1 KB
分享到:
相关推荐
OpenCms创建网站过程图解——献给OpenCms的初学者们,一起学习吧
php做的新闻系统——仅供初学者参考php做的新闻系统——仅供初学者参考php做的新闻系统——仅供初学者参考php做的新闻系统——仅供初学者参考php做的新闻系统——仅供初学者参考php做的新闻系统——仅供初学者参考...
java初学者适用——java实例大全 java初学者适用——java实例大全 java初学者适用——java实例大全
写些什么呢?总之很典型,精心整理出来的,希望对大家有点用处!
关于12864液晶——写给初学者,word文档!
PS图层样式初学者必读——颜色叠加、渐变叠加、图案叠加.pdfPS图层样式初学者必读——颜色叠加、渐变叠加、图案叠加.pdfPS图层样式初学者必读——颜色叠加、渐变叠加、图案叠加.pdfPS图层样式初学者必读——颜色叠加...
程序开发心理学————非常适合初学程序的人看
自己学Android没几天,这些代码风格是以初学者的风格,大神们勿喷。
用C#编写的NewsReader——很适合初学者
软件测试基础知识——适合初学者 详细介绍了软件测试的分类,初学者需要注意的软件思想,bug的分类等等知识。
学习LINUX的课程小程序,有助于理解linux的很多概念与相关的系统编程的函数理解!借助这些实例,更好理解在linux下进行系统编程的学习!
Photoshop_CS5画笔初学者必读(12)——颜色替换工具
LaTeX(LATEX,音译“拉泰赫”)是一种基于TeX的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在20世纪80年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由TeX所提供...
从大体了解网站建立的步骤和要用到的技术支持
java初学者——IDEA——SSM项目环境搭建
初学者 很实用的 jsp学习笔记——初学者的选择
Oracle数据库设计文档——帮助数据库初学者了解数据库设计,
ASP.NET源码——人才网初学者工具包源码.zip
这本秘籍系偶千辛万苦寻来,据说来源于海外。初学者习之,可扎稳根基;资深者习之, 可理清脉络。此乃入门珍品,高级内外功大法,日后再展现众人