一、什么是类、对象和方法?
1.类
类用官方解释为:类是一个模板,它描述一类对象的行为和状态。类本身就是一种抽象的概念(以后我们还会介绍抽象类)。
举个例子:DOTA中有许多英雄。这些英雄(无论是敏捷还是力量型,无论是天辉还是夜魇)都可以统称为DOTA英雄,DOTA英雄就是一个大类。当然,我们还可以继续划分,比如力量型是一类,敏捷型是一类。天辉是一类,夜魇是一类。
2.类的属性或状态
通过上边的例子,我们发现英雄都有名字、血量、魔法值、技能个数、移动速度等等。这些就是我们这一类的属性或状态。当然,力量型或敏捷型英雄可能有不同的属性,这就涉及到了继承,比如天辉力量型英雄有天辉英雄的属性,而无论天辉还是夜魇都有DOTA英雄的属性,具体在以后再细说。
//创建了一个公共类,类名叫DOTAHero //类的声明格式 /* public class 类名{} class 类名{} */ public class DOTAHero{ //DOTAHero有姓名、血量、技能个数、移动速度等这些属性
//属性定义格式:数据类型 属性名
//数据类型可以是基本数据类型也可以是引用数据类型,String就是引用数据类型
String name; float HP; int skill; int moveSpeed; }
3.对象
对象是类的一个实例,例如
我们划分了DOTA英雄这个类,那么我们就可以创造一个实实在在的英雄出来,比如我们创建一个英雄叫剑圣,剑圣这个英雄就是DOTA英雄这个类的一个实例化对象。
创建好剑圣这个英雄后我们就可以给他设置名字、血量等属性,叫做初始化,如果我们不设置,那么他的值默认为0或空。
public class DOTAHero { String name; int skill; float HP; int moveSpeed;
public static void main(String[] args) { //对象的创建用new关键字 //格式: 类名 + 对象名 = new 类名(); DOTAHero Hero=new DOTAHero(); //我们给创建的这个英雄起了个名字叫剑圣 Hero.name="剑圣"; //剑圣的血量是600,技能是4个,移动速度是110; Hero.HP=600; Hero.skill=4; Hero.moveSpeed=110; //如果我们不设置这些具体的值,那么这些属性的默认值为0或null System.out.println("英雄名:"+Hero.name+",血量:"+Hero.HP+",技能个数:"+Hero.skill); } }
那么JVM是怎么来给这个执行的呢?
4.方法
方法就是对象可以执行的动作,它是为了执行一个功能而编写语句的集合。
比如:我们创建的这个剑圣可以攻击,可以释放技能,可以升级,可以买装备,这些就叫做方法。
public class DOTAHero { String name; int skill; float HP; int moveSpeed; public static void main(String[] args) { DOTAHero Hero=new DOTAHero(); Hero.name="剑圣"; Hero.HP=600; } //这就是声明了一个攻击的方法 /* 方法的声明格式: public static 返回值类型 方法名称(参数列表){ 程序语句; [return[返回值];] } 返回值类型必须相同 如果没有返回值声明时用void */ public static void attack() { //这就是一个无返回值,无参数的方法 System.out.println("普通攻击"); } }
5.方法的调用
方法可以在主方法中调用
public class DOTAHero { String name; int skill; float HP; int moveSpeed; public static void main(String[] args) { DOTAHero Hero=new DOTAHero(); Hero.name="剑圣"; Hero.HP=600; //调用attack方法 attack(); } public static void attack() { System.out.println("攻击"); } }
public static 返回值类型 方法名称(参数列表){
程序语句;
[return[返回值];]
}