【Java——成员方法】

定义一个类,类中可以有属性,方法

class 类名{
  属性(成员变量);
  成员方法;
}

在某些情况下,我们在需要定义成员方法(简称方法)。比如人类:除了有一些属性外(年龄、姓名等),我们人类还有一些行为比如:可以说话,跑步,通过学习还可以做算术题等等。这时就要用成员方法才能完成。

成员方法的定义:

注意:成员方法是写在定义的类里的

访问修饰符 返回数据类型 方法名(形参列表){
   语句;
   ...

   retuen 返回值;//不是必需的,看情况
}

访问修饰符: 作用:控制方法使用的范围

分为四种: public , protected, 默认, private ( 如果不写访问修饰符,就是默认访问修饰符)

注意:

1.一个方法最多有一个返回值(需要返回多个时 ——>数组 )

2. 返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)

3.如果方法要求有 返回数据类型,则方法体中最后的执行语句必须为return 值;而且要 求返回值类型必须和return的值类型一致或兼容

4.如果方法是void,方法体中可以没有return语句或者只写return;

5.同一个类中的方法调用:直接调用即可。

跨类中的方法A类调用B类:需要通过对象名调用。 在A类中new 一个B类的对象

方法的妙处可以有效地提高代码的复用性

可以将实现的细节封装起来,然后供其他用户来调用

理解:定义的类中 定义的方法可以理解为C 中的一个函数,可以在主函数中进行调用所以可以接受方法的返回值

注意:当调用方法时,都会在栈中开启一个独立的空间

例子:

package Method01;

public class Method01 {
  public static void main(String[] args) {
    
      Person p1 = new Person();

      p1.speak();//调用speak方法

      p1.Calo01();//调用Calo01方法

      p1.Calo02(5);//调用Calo02方法,并且进行传参 5

      int ret = p1.Sum(10,20);
      System.out.println("返回值=" + ret);
      
}
}

class Person{
    
    public void speak(){
        System.out.println("我是一个好人");
    }
    
    public void Calo01() {
        int res = 0;
        for(int i = 0;i<=1000;i++){
            res += i;            
        }
        System.out.println("1+2+...+1000结果=" + res);
    }

    public void Calo02(int n) {
            int res = 0;
            for(int i = 0;i<=n;i++){
                res += i;               
        }
        System.out.println("1+...+n结果=" + res);
    }
    
    public int Sum(int n1 , int n2) {
        int ret  = n1 + n2;
        return ret;        
    }

}
//我是一个好人
//1+2+...+1000结果=500500
//1+...+n结果=15
//返回值=30

方法传参机制

基本数据类型传递的是值(值拷贝),形参的任何改变不影响实参!

引用数据类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在飞机大战游戏中,血量和胜负是非常重要的元素。我们可以通过以下步骤来实现它们: 1. 定义玩家飞机和敌机的血量属性,可以将其定义为成员变量。 2. 在玩家飞机和敌机被击中时,减少对应的血量。 3. 当玩家飞机或敌机的血量为0时,判断游戏胜负。 4. 在游戏结束时,显示胜负信息并提示是否重新开始游戏。 下面是具体的实现步骤: 1. 定义玩家飞机和敌机的血量属性 在Plane类中添加以下成员变量: ```java private int hp; // 飞机血量 ``` 在EnemyPlane类和PlayerPlane类中分别初始化血量: ```java public class EnemyPlane extends Plane { // 构造方法 public EnemyPlane(int x, int y, BufferedImage image) { super(x, y, image); this.hp = 3; // 初始化敌机血量为3 } } public class PlayerPlane extends Plane { // 构造方法 public PlayerPlane(int x, int y, BufferedImage image) { super(x, y, image); this.hp = 5; // 初始化玩家飞机血量为5 } } ``` 2. 减少血量 在Plane类中添加以下方法: ```java public void decreaseHp() { hp--; // 血量减1 } ``` 在Bullet类中,击中敌机时调用敌机的decreaseHp()方法: ```java public void hitEnemy(EnemyPlane enemy) { enemy.decreaseHp(); // 减少敌机血量 // 判断敌机是否被击败 if (enemy.getHp() == 0) { enemy.setAlive(false); // 敌机死亡 score += 10; // 得分加10分 } } ``` 在GameFrame类的paint()方法中,绘制玩家飞机和敌机的血条: ```java // 绘制玩家飞机血条 g.setColor(Color.RED); g.fillRect(20, 30, playerPlane.getHp() * 20, 10); // 绘制敌机血条 for (EnemyPlane enemy : enemies) { if (enemy.isAlive()) { // 只绘制存活的敌机血条 g.setColor(Color.RED); g.fillRect(enemy.getX(), enemy.getY() - 10, enemy.getHp() * 20, 5); } } ``` 3. 判断游戏胜负 在GameFrame类中添加以下方法: ```java // 判断游戏是否结束 public boolean isGameOver() { // 玩家飞机血量为0,游戏失败 if (playerPlane.getHp() == 0) { return true; } // 所有敌机均被击败,游戏胜利 for (EnemyPlane enemy : enemies) { if (enemy.isAlive()) { return false; // 还有存活的敌机,游戏继续 } } return true; // 没有存活的敌机,游戏胜利 } ``` 在GameFrame类的run()方法中,判断游戏是否结束: ```java // 游戏主循环 public void run() { while (true) { // 更新游戏状态 update(); // 绘制游戏界面 repaint(); // 线程休眠 try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } // 判断游戏是否结束 if (isGameOver()) { // 显示游戏结束信息 String message; if (playerPlane.getHp() == 0) { message = "Game Over! You Lose!"; } else { message = "Game Over! You Win! Score: " + score; } int option = JOptionPane.showConfirmDialog(this, message + " Restart?", "Game Over", JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { restart(); // 重新开始游戏 } else { System.exit(0); // 退出游戏 } } } } ``` 4. 显示胜负信息并提示是否重新开始游戏 在游戏结束时,使用JOptionPane显示游戏胜负信息,并提示是否重新开始游戏。如果玩家选择重新开始游戏,则调用restart()方法重新初始化游戏状态。 ```java // 显示游戏结束信息 String message; if (playerPlane.getHp() == 0) { message = "Game Over! You Lose!"; } else { message = "Game Over! You Win! Score: " + score; } int option = JOptionPane.showConfirmDialog(this, message + " Restart?", "Game Over", JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { restart(); // 重新开始游戏 } else { System.exit(0); // 退出游戏 } ``` 至此,我们已经成功地实现了飞机大战游戏中的血量和胜负功能,玩家可以享受更加丰富的游戏体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值