面向对象编程:就是在模拟现实生活。
对象:只要是一个具体的物体或者一个具体的事物就是一个对象。
举例:
荷花
会从那些方面去描述一个对象呢?
特征:名字,年龄,身高,体重,性别,...
行为(功能,用途):走路,吃饭,睡觉,学习,玩,...
物体根据 根据对象相似的特征和相似的行为进行归类。
程序中的类:就是将生活中的对象进行一种抽象的定义。
类包含两个部分:1.属性 2.方法(方法分为两类:1.构造方法 2.普通方法)
类的属性对应的是对象的特征;类的方法对应的是对象的行为。
3.类的格式
public class 类名 {
//属性定义格式
private 数据类型 属性名;
//构造方法定义格式
public 类名构造方法名(数据类型 参数名,...){
//代码
}
//普通方法定义格式
public 返回值数据类型 方法名(数据类型 参数名,...){
//代码
}
}
4.实例化对象和调用方法的格式
实例化对象的关键字:new
格式:
类名 对象名 = new 构造方法名(参数值);
调用方法的格式:
对象名.方法名(参数值);
5.构造方法
构造方法用途
1.初始化属性值
2.实例化对象
构造方法和普通方法的区别
1.返回值不同
2.调用时间不同
3.方法名不同
4.用途不同
6.方法重载
方法重装的原因 不同的对象会有同一种方法,要将他们进行区分
方法重载的条件:
1.在一个类中或者在有继承关系的父类和子类中;
2.方法名必须要完全一致;
3.方法所带的参数个数,参数类型,参数顺序必须要有一个不同。
调用重载的方法:
根据方法所带的参数个数,参数类型,参数顺序来区分方法的调用。
7.this关键字
作用:
1.当参数名和属性名相同时,可以使用this关键字来做区分,加了this的表示属性,没有加的则表示参数。
2.调用构造方法,属性或者方法。
参数和属性名不同时可以不用this
this.属性=参数
this.name
this.study();
public 构造方法(String name){
this(name,1);
}
Student stu = new 构造方法("a");
Student stu2 = new 构造方法("a");
this表示当前调用方法的对象
附带“德玛西亚与艾希对打”的代码
import java.util.Random; public class fighting { private String name;//角色名字 private int power;//攻击力量 private int upPower;//初始攻击 private int blood;//血量 private int maxBlood;//血量上限 private int upSpeed;//初始速度 private int speed;//速度 private int exp=0;//经验 private int degree=1;//级别 //获取属性 //初始攻击值 public int getUpPower() { this.upPower+=this.degree*2; return this.upPower; } //初始最大血量 public int getmaxBlood() { this.maxBlood+=this.degree*10; return this.maxBlood; } //初始攻速 public int getUpSpeed() { this.upSpeed+=this.degree; return this.upSpeed; } //等级初始 public int getDegree() { this.degree=(this.exp+100)/100; return this.degree; } //设置和获取名字属性 public void setName(String name) { this.name=name; } public String name() { return this.name; } //构造函数 public fighting(String name ,int power,int maxBlood,int speed) { this.name = name; this.upPower=power; this.maxBlood=maxBlood; this.upSpeed=speed; } //攻击某人 public void attack(fighting r) { //初始化攻击双方属性 this.blood=this.getmaxBlood(); this.speed=this.getUpSpeed(); this.power = this.getUpPower(); r.blood=r.getmaxBlood(); r.speed=r.getUpSpeed(); r.power = r.getUpPower(); r.name=r.name(); int i=0; Random rand = new Random();//产生随机数 while(this.blood>0&&r.blood>0) { i++; if(i>10) break;//战斗10次结束 if(this.speed>r.speed)//一方速度比另一方速快 { r.blood=r.blood-this.power;//速度快的一方开始攻击 System.out.println(this.name+"用q打了对方一下,对方减少了"+this.power); System.out.println(r.name+"你还剩余"+r.blood+"滴血"); if(r.blood>0)//一击未死,对方开始进攻 { this.blood=this.blood-r.power; System.out.println(r.name+"用技能q打了对手一下,血量减少"+r.power); System.out.println(this.name+"你还剩余"+this.blood+"滴血"); } } else if(this.speed==r.speed&&rand.nextInt(10)>5)//产生一个10以内的随机数并且大于五,才能让对手进攻 { r.blood=r.blood-this.power; System.out.println(this.name+"用技能w打了你一下,血量减少"+this.power); System.out.println(r.name+"你还剩余"+r.blood+"滴血"); if(r.blood>0) { this.blood=this.blood-r.power;//剩余血量大于0,对手进攻 System.out.println(r.name+"用技能q打了你一下,血量减少"+this.power); System.out.println(this.name+"你还剩余"+this.blood+"滴血"); } } else { this.blood=this.blood-r.power; System.out.println(r.name+"用技能e打了你一下,血量减少"+r.power); System.out.println(this.name+"你还剩余"+this.blood+"滴血"); if(this.blood>0) { r.blood=r.blood-this.power; System.out.println(this.name+"用技能r打了你一下,血量减少"+this.power); System.out.println(r.name+"你还剩余"+r.blood+"滴血"); } } } //决定比赛的输赢的方法 if(i>10||r.blood==this.blood)//当比赛的会和超过或者血量相等时 System.out.println("此场为平局"); else if(r.blood<=0)//对手的血量小于0 { System.out.println(r.name+"你输了"); this.exp=this.exp+1;//经验增长 System.out.println(this.name+"你赢了"); System.out.println(this.name+"你获得了1点经验"); System.out.println(this.name+"你当前的等级是"+this.getDegree() +"级 经验是"+exp);} else { System.out.println(this.name+"你输了"); this.exp=this.exp+1; System.out.println(r.name+"你赢了"); System.out.println(r.name+"你获得了1点经验"); System.out.println(r.name+"你当前的等级是"+this.getDegree()+"级 经验是"+exp); } } } public class winner { /** * @param args * @param */ // public static void main(String[] args) // { // // // // TODO Auto-generated method stub // // } // //} public static void main(String[] arg) { fighting r1 = new fighting("艾希",100,350,8);//实例化一个对象r1 fighting r2 = new fighting("德玛西亚",100,350,8);//实力化对象r2 for(int i=0;i<10;i++)//打十个回合 r1.attack(r2);//调用攻击函数 } }
相关推荐
JAVA类与对象及数组习题 JAVA类和对象及数组是JAVA编程语言的基础概念。下面是关于JAVA类和对象及数组的习题,涵盖了构造方法、继承、多重继承、变量声明、数组初始化等方面的知识点。 1. 构造方法的调用方式: ...
在“java类与对象教学(2)”中,我们将深入探讨几个关键知识点:对象重构、`this`关键字、静态变量与静态方法,以及对象的进一步讨论和包的使用。 1. **对象重构**: 重构是改进代码结构的过程,不改变其外部行为,...
"java类与对象实例" 在 Java 中,类和对象是两个紧密相连的概念。类是一种蓝图,用于创建对象,而对象是类的一个实例。类描述了对象的基本结构,包括属性、方法和事件等。类设计的关键概念包括封装、继承和多态。 ...
总之,Java类与对象是程序设计的关键元素,理解和掌握它们对于成为一名优秀的Java开发者至关重要。通过深入研究源码、利用合适的工具,并在实践中不断应用,我们可以不断提升对这一核心概念的理解和运用能力。
类与对象的基本概念java类与对象的基本概念
详细的描述了类和对象的相关内容,清晰明了,绝对的好PPT
java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象...
本科课程【java程序设计】实验2 - 类与对象编程练习_java类与对象实验_1 + 1=王的博客-CSDN博客.mht
Java类与对象基本概念PPT教案学习.pptx
类是创建对象的根源,它定义了同一类对象共有的属性和方法。类中的属性(Attribute)可以理解为对象所拥有的变量,而方法(Method)则是对象可以执行的操作或行为。 对象(Object)是类的实例(Instance),是具有...
详细的描述了类和对象的相关内容,清晰明了,绝对的好PPT
1. **类与对象**:Java中的基本构建块是类,它代表了现实世界中的事物或概念。对象则是类的实例,具有类定义的属性和行为。学习如何创建和使用类及对象,是理解Java面向对象编程的关键。 2. **封装**:封装是面向...
java关于类和对象课件,类的继承 方法的重写 Object类 对象转型 多态
面向对象的基本概念 类声明、对象创建 参数传递 this引用 类的管理(包和JAR文件) 字符串类 数组