5.18

第四章 类、对象和包

面向对象分析过程

  • 万物皆对象;(找对象)
  • 对象因关注而产生;(找属性和行为)
  • 把具有相同属性和行为的对象进行抽取,就是类;(生成类)

面向对象编程过程

  • 编写类
  • 填写类的属性和行为
  • 通过类实例化对象(new)
  • 通过.操作符调用属性和行为

来自long包中的类就不用导包;类是引用数据类型;

new

 Dog dog=new Dog();
  • 左边的引用数据类型的长度为4个字节;
  • 右边:
    1. 实例化对象
    2. 分配空间
    3. 自动初始化(基本数据类型为0;引用数据类型为空)

类和对象的关系

  • 类是对象的抽象;对象是类的实例化;
  • 类是具有相同属性和行为的一组对象的抽象;

类的定义

public class 类名{
}

类名、Java文件名、class文件名的关系

  • 只有公共类名=Java文件名;
  • 类名=class文件名;
  • 一篇Java文件可以有多个类,但只能有一个公共类;
  • class文件的个数和类的个数一致;

内存存放

  • 栈:局部变量,
  • 堆:new实例化的全局变量;
  • 数据段:
  • 代码段:

垃圾回收

看是否有引用,程序员没办法主动来决定,通过System.gc();虚拟机尽最大努力从所有丢弃的对象中回收了空间。
- 匿名对象只能使用一次,

this

  • 含义:当前对象的引用,
  • 使用条件:方法中的全局变量和局部变量重名时;而我们要访问的是全局变量,那么我们就需要this来操作;否者就近原则,为局部变量;

属性访问器get

当要访问一个访问修饰为private的私有属性时,我们要通过访问器
get方法来访问

private String neme;
public String getName(String name){
    return name;
}

属性修改器set

当要修改一个访问修饰为private的私有属性时,我们要通过访问器
set方法来访问

private String neme;
public void setName(String name){
    this.name=name;
}

实例

需求:

制作一个小游戏,具有以下功能:

  • 1、角色:名字、等级、防御力、攻击力、武器、防具;
  • 2、角色拥有攻击力,当有武器时,附带攻击效果;否者为普通攻击
  • 3、角色拥有防御,当有防具时,附带防御效果;否者为普通防具

分析:

  • 首先,编写通过以上需求分析我们可以看出该游戏我们需要书写三个类:分别是角色类、武器类、防具类;
  • 然后分析各个类的属性和方法:

    1. 角色类:
      • 属性应该有名字,等级,没有武器时的攻击力,没有防具是的防御力
      • 方法应该有升级,攻击的伤害,攻击时的防御;

    2.武器类:

    • 属性应该有武器名字,武器的固定伤害

    3.防具类:

    • 属性应该有防具名字,防具的固定防御
  • 最后,通过主函数main来调用个各类的属性和方法

具体代码
//防具类
package com.lovo.homework.game;

public class Weapon {
    private String name;
    private int gongJiLi;
    public void special(){
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getGongJiLi() {
        return gongJiLi;
    }
    public void setGongJiLi(int gongJiLi) {
        this.gongJiLi = gongJiLi;
    }

}




//武器类
package com.lovo.homework.game;

public class Armor {
    private String name;
    private int fangYuLi;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getFangYuLi() {
        return fangYuLi;
    }
    public void setFangYuLi(int fangYuLi) {
        this.fangYuLi = fangYuLi;
    }
}

//角色类
package com.lovo.homework.game;

public class Rolo {
    private String name;
    private int grade;
    private int gongJiLi;
    private int fangYuLi;
    private boolean weaponOrNot;
    private boolean armorOrNot;
    public boolean getWeaponOrNot() {
        return weaponOrNot;
    }
    public void setWeaponOrNot(boolean weaponOrNot) {
        this.weaponOrNot = weaponOrNot;
    }
    public boolean getArmorOrNot() {
        return armorOrNot;
    }
    public void setArmorOrNot(boolean armorOrNot) {
        this.armorOrNot = armorOrNot;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getGrade() {
        return grade;
    }
    public void setGrade(int grade) {
        this.grade = grade;
    }
    public int getGongJiLi() {
        return gongJiLi;
    }
    public void setGongJiLi(int gongJiLi) {
        this.gongJiLi = gongJiLi;
    }
    public int getFangYuLi() {
        return fangYuLi;
    }
    public void setFangYuLi(int fangYuLi) {
        this.fangYuLi = fangYuLi;
    }
    public void upGrade(){
        this.setGrade(this.getGrade()+1);
        System.out.println("升级!达到"+this.getGrade()+"级!");
    }
    public void defense(Weapon weapon){
        if(this.getGrade()>4){
            System.out.println("可以使用武器!");
            System.out.println("当前属性:");
            System.out.println("角色:"+this.getName()+"\n等级为:"+this.getGrade()+"\n自身造成伤害:"+this.getGongJiLi()+"\n武器:"+weapon.getName()+"\n造成伤害:"+weapon.getGongJiLi());
        }else{
            System.out.println("当前属性:");
            System.out.println("角色:"+this.getName()+"\n等级为:"+this.getGrade()+"\n自身造成伤害:"+this.getGongJiLi()+"\n无武器:"+"\n没有造成伤害");
        }
    }
    public void attack(Armor armor){
        if(this.getGrade()>=3){
            System.out.println("可以使用防具!");
            System.out.println("当前属性:");
            System.out.println("自身抵御伤害:"+this.getGongJiLi()+"\n防具:"+armor.getName()+"\n抵御伤害:"+armor.getFangYuLi());
        }else{
            System.out.println("当前属性:");
            System.out.println("自身抵御伤害:"+this.getGongJiLi()+"\n无防具:"+"\n无额外防御");
        }
    }

}


//主函数

package com.lovo.homework.game;

public class TestMain {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Rolo rolo=new Rolo();
        rolo.setName("无名");
        rolo.setGrade(0);
        rolo.setGongJiLi(100);
        rolo.setFangYuLi(50);
        Weapon weapon=new Weapon();
        weapon.setName("神剑");
        weapon.setGongJiLi(500);
        Armor armor=new Armor();
        armor.setFangYuLi(300);
        armor.setName("藤甲");
        System.out.println("欢迎来到小游戏!");
        System.out.println("#################");
        rolo.defense(weapon);
        rolo.attack(armor);
        System.out.println("#################");
        rolo.upGrade();
        rolo.defense(weapon);
        rolo.attack(armor);
        System.out.println("#################");
        rolo.upGrade();
        rolo.defense(weapon);
        rolo.attack(armor);
        System.out.println("#################");
        rolo.upGrade();
        rolo.defense(weapon);
        rolo.attack(armor);
        System.out.println("#################");
        rolo.upGrade();
        rolo.defense(weapon);
        rolo.attack(armor);
        System.out.println("#################");
        rolo.upGrade();
        rolo.defense(weapon);
        rolo.attack(armor);
    }

}
输出结果
欢迎来到小游戏!
#################
当前属性:
角色:无名
等级为:0
自身造成伤害:100
无武器:
没有造成伤害
当前属性:
自身抵御伤害:100
无防具:
无额外防御
#################
升级!达到1级!
当前属性:
角色:无名
等级为:1
自身造成伤害:100
无武器:
没有造成伤害
当前属性:
自身抵御伤害:100
无防具:
无额外防御
#################
升级!达到2级!
当前属性:
角色:无名
等级为:2
自身造成伤害:100
无武器:
没有造成伤害
当前属性:
自身抵御伤害:100
无防具:
无额外防御
#################
升级!达到3级!
当前属性:
角色:无名
等级为:3
自身造成伤害:100
无武器:
没有造成伤害
可以使用防具!
当前属性:
自身抵御伤害:100
防具:藤甲
抵御伤害:300
#################
升级!达到4级!
当前属性:
角色:无名
等级为:4
自身造成伤害:100
无武器:
没有造成伤害
可以使用防具!
当前属性:
自身抵御伤害:100
防具:藤甲
抵御伤害:300
#################
升级!达到5级!
可以使用武器!
当前属性:
角色:无名
等级为:5
自身造成伤害:100
武器:神剑
造成伤害:500
可以使用防具!
当前属性:
自身抵御伤害:100
防具:藤甲
抵御伤害:300
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值