| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 3310 人关注过本帖
标题:Java新手,今天在学写一个打飞机的小游戏,遇到一处不明
只看楼主 加入收藏
墨落成白
Rank: 1
等 级:新手上路
帖 子:46
专家分:4
注 册:2014-3-16
结帖率:70%
  已结贴   问题点数:8  回复次数:5   
Java新手,今天在学写一个打飞机的小游戏,遇到一处不明
public class PPlane extends Plane{

    private Image img;
    private JPanel jpanel;
    private int direction;
    public static boolean UP;
    public static boolean DOWN;
    public static boolean LEFT;
    public static boolean RIGHT;
    public static boolean isFired;
    public static int life = 100;
   
    public PPlane(){
        
    }
    public PPlane(int x, int y, int width, int height) {
        super(x, y, width, height);
        img = new ImageIcon("Image/boss1.png").getImage();
        // TODO Auto-generated constructor stub
    }
    //传递  画布 这里是什么意思?
    public JPanel getJpanel() {
        return jpanel;
    }
        //还有这里
    public void setJpanel(JPanel jpanel) {
        this.jpanel = jpanel;
    }
   
    //设置方向
    public int getDirection() {
        return direction;
    }
    public void setDirection(int direction) {
        this.direction = direction;
    }
    public void drawMe(Graphics g) {
        // TODO Auto-generated method stub
        g.drawImage(img, this.x,this.y,this.w,this.h,this.jpanel);
    }

    public void changeDirection(int direction){
        this.direction = direction;
    }
   
    public void pplaneMove(){
        if (UP)
            y -= Global.SPEED;
        if (DOWN)
            y += Global.SPEED;
        if (LEFT)
            x -= Global.SPEED;
        if (RIGHT)
            x += Global.SPEED;
    }
    public boolean isAlive(){
        if(PPlane.life <= 0){
            PPlane.life = 0;
            return false;   
        }
        else
            return true;
    }
}

[ 本帖最后由 墨落成白 于 2015-3-15 10:11 编辑 ]
搜索更多相关主题的帖子: direction  private  小游戏  public  super  
2015-03-15 10:02
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
  得分:8 
1)private JPanel jpanel;

2)public JPanel getJpanel() {
    return jpanel;
}

3)public void setJpanel(JPanel jpanel) {
    this.jpanel = jpanel;
}

对于面向对象编程语言,一个重要的思想就是“隐藏实现细节”
Encapsulation - Hiding the implementation details of a class.

所以,一般来讲,所有的成员变量都要设置为private,也就是类内部访问级别
即使是别的类new这个类的对象,也不能访问类内部的变量

隐藏实现细节,可以确保类内部的逻辑发生变化时,只要对外的接口没有发生变化,对正整个系统的影响降至最低
避免很多不必要的回归测试

但是,所有的成员变量都设置为private之后,外部没有对其进行设定和参照的方法也不行
于是就有了2)和3)

在简单的程序中,这样看起来有点儿多此一举
但是在非常复杂的程序中,不这么做的话,就没有办法对代码进行对其他逻辑没有影响的修改了……

把变量设为private并为其追加getter和setter的过程,一般称为“胶囊化”
胶囊化在Eclipse或者IntelliJ中都可以用IDE的菜单命令快速自动实现的
2015-03-15 13:35
墨落成白
Rank: 1
等 级:新手上路
帖 子:46
专家分:4
注 册:2014-3-16
  得分:0 
回复 2楼 日知己所无
谢谢大神指点,什么时候才能有你这样的水准
2015-03-15 16:06
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
  得分:0 
回复 3楼 墨落成白
不客气,一起学习,共同进步
2015-03-15 16:28
墨落成白
Rank: 1
等 级:新手上路
帖 子:46
专家分:4
注 册:2014-3-16
  得分:0 
回复 4楼 日知己所无
那么怎么用Eclipse IDE的菜单命令快速自动实现?
2015-03-15 19:15
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
  得分:0 
回复 5楼 墨落成白
菜单(T)->(S)
2015-03-17 22:06







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026651 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved