会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132437个问题

package com.bjsxt;

import java.awt.*;

/*
* 游戏物体的根类
* */
public class GameObject {
    Image image;//该物体对应的图片对象
    double x,y; //该物体的坐标
    int speed;//该物体的运行速度
    int width,height;//该物体所在矩形区域的宽度和高度

    public GameObject() {
    }

    /*
    * 该怎么样绘制本对象
    * */
    public void drawMySelf(Graphics g){//构造无参方法
        g.drawImage(image,(int)x,(int)y,null);
    }

    public GameObject(Image image, double x, double y, int speed) {
        this.image = image;
        this.x = x;
        this.y = y;
        if (image != null) {
            this.width = image.getWidth(null);
            this.height = image.getHeight(null);
        }
    }

    public GameObject(Image image, double x, double y, int speed, int width, int height) {
        this.image = image;
        this.x = x;
        this.y = y;
        this.speed = speed;
        this.width = width;
        this.height = height;
    }
    public GameObject(Image image, double x, double y){

    }
     //返回物体对应矩形区域,便于后续在碰撞检测中使用
    public  Rectangle getRect(){
        return  new Rectangle((int) x,(int) y,width,height);
    }
}

老师我是不是这个游戏物体的根类构造错了啊咋运行的时候没有飞机啊

image.png

JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 1681楼
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 1683楼
JAVA 全系列/第一阶段:JAVA 快速入门/变量、数据类型、运算符 1684楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 1686楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 1687楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 1688楼
JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 1689楼

老师,多态的三个必要条件:继承,重写,父类引用执行子类对象。既然可以直接使用子类新建的对象调用重写的 方法,为何需要使用父类引用指向子类对象调用重写方法呢?而且父类引用指向子类对象还存在无法调用子类独有方法的缺陷。

// 测试多态和对象类型转换
public class TestPoly {

    static void animalCry(Animal a){
        a.shout();
    }

    public static void main(String[] args) {

        // 同一类中,static 方法可以调用其他 static 方法
        animalCry(new Cat());   // 以 Cat 对象调用 animalCry 方法

        Animal a1 = new Dog();
        /*注意,向上转型时,子类单独定义的方法会丢失,因此 a1 无法访问到 Dog 中的 seeDoor 方法。对于 Cat 类同理。*/
        a1.shout();
        animalCry(a1);   // a1 是编译时类型,Dog 才是运行时类型。

        

        Animal a01 = new Animal();
        a01.shout();

        Dog d01 = new Dog();
        d01.shout();
        d01.seeDoor();

        Cat c01= new Cat();
        c01.shout();
        c01.catchMouse();

    }
}


class Animal {
    public void shout(){
        System.out.println("动物叫了一声!");
    }
}

class Dog extends Animal {

    // 重写父类方法
    public void shout() {
        System.out.println("狗子汪汪汪!");
    }

    public void seeDoor() {
        System.out.println("乖乖看门");
    }
}

class Cat extends Animal {

    public void shout(){
        System.out.println("猫咪喵喵喵!");
    }

    public void catchMouse() {
        System.out.println("猫抓耗子");
    }

}


JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 1690楼
JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 1691楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 1692楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 1693楼
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 1694楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 1695楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637