会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132437个问题
JAVA 全系列/第一阶段:JAVA 快速入门/控制语句、方法、递归算法 2476楼

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 class TestPolym {
    public static void main(String[] args) {
        Animal a1 = new Cat(); // 向上可以自动转型
        //传的具体是哪一个类就调用哪一个类的方法。大大提高了程序的可扩展性。
        animalCry(a1);
        Animal a2 = new Dog();
        animalCry(a2);//a2为编译类型,Dog对象才是运行时类型。
         
        //编写程序时,如果想调用运行时类型的方法,只能进行强制类型转换。
        // 否则通不过编译器的检查。
        Dog dog = (Dog)a2;//向下需要强制类型转换
        dog.seeDoor();
    }
 
    // 有了多态,只需要让增加的这个类继承Animal类就可以了。
    static void animalCry(Animal a) {
        a.shout();
    }
 
    /* 如果没有多态,我们这里需要写很多重载的方法。
     * 每增加一种动物,就需要重载一种动物的喊叫方法。非常麻烦。
    static void animalCry(Dog d) {
        d.shout();
    }
    static void animalCry(Cat c) {
        c.shout();
    }*/
}

老师,这是学习材料里的代码,我可以理解它的意思但是我不理解为什么要引入多态,对于这个例子为什么不直接使用

        Dog d = new Dog();
        Cat c = new Cat();
        d.shout();
        c.shout();

这样的调用来实现,不需要重载动物的喊叫方法啊

JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 2477楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 2479楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 2480楼
JAVA 全系列/第一阶段:JAVA 快速入门/IDEA的使用和第一个java项目 2481楼

问题:下面是前4问的代码,第5问不会写【 创建一个方法:查询最终购买价,大于指定数字的所有商品。】

老师具体代码应该怎么写?

/**
 * 遍历(ToString)
 */
public class Test91 {
    public static void main(String[] args) {
        Product m0 = new Product(1, "百战鼠标", "BZ_001", 99.21, 0.9);
        Product m1 = new Product(2, "键盘侠玩偶", "WO_102", 403.0, 0.7);
        Product m2 = new Product(3, "实战java程序设计", "BK_001", 89.0, 0.8);
        Product m3 = new Product(4, "高淇牌西装", "GQ_XF_12", 700.0, 0.5);
        Product m4 = new Product(5, "大米牌手机", "DM_PH_13", 900.0, 0.3);

         //Product[] p =new Product[]{m0,m1,m2,m3,m4};
        //Product[] p ={m0,m1,m2,m3,m4};
        Product[] p = new Product[5];
        p[0] = m0;
        p[1] = m1;
        p[2] = m2;
        p[3] = m3;
        p[4] = m4;

        for (int i=0;i<p.length;i++) {
            System.out.println(p[i]);
        }
    }
}

class Product {
    private int id;
    private String name;
    private String model;
    private double price;
    private double discount;

    Product() {
    }

    @Override
    public String toString() {
        return getId()+"\t"+getName()+"\t"+getModel()+"\t"+getPrice()+"\t"+getDiscount();
    }

    public Product(int id, String name, String model, double price, double discount) {
        this.id = id;
        this.name = name;
        this.model = model;
        this.price = price;
        this.discount = discount;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public double getDiscount() {
        return discount;
    }

    public void setDiscount(double discount) {
        this.discount = discount;
    }
}


JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 2482楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 2483楼
JAVA 全系列/第一阶段:JAVA 快速入门/JAVA入门和背景知识 2484楼
JAVA 全系列/第一阶段:JAVA 快速入门/面向对象详解和JVM底层内存分析 2485楼
JAVA 全系列/第一阶段:JAVA 快速入门/变量、数据类型、运算符 2486楼
JAVA 全系列/第一阶段:JAVA 快速入门/IDEA的使用和第一个java项目 2487楼

image.png

package com.itbaizhan.PlaneGame;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Play extends Frame {

    Image plane = GameUtil.getImage("images\\plane.png");
    Image bg = GameUtil.getImage("images/bg.jpg");

    public void paint(Graphics g){
        g.drawImage(bg,500,500,null);
        g.drawImage(plane,100,100,23,23,null);
    }

    public void lunchFrame(){
        this.setTitle("飞机大战");
        setVisible(true);
        setSize(500,500);

        setLocation(400,400);

        //设置窗口关闭操作
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0); //设置正常退出
            }
        });
    }//lunchFrame

    public static void main(String[] args) {
        Play play = new Play();
        play.lunchFrame();
    }

}
package com.itbaizhan.PlaneGame;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

public class GameUtil {

    public GameUtil() {
    }

    public static Image getImage(String path){
        BufferedImage img = null;
        URL u = GameUtil.class.getClassLoader().getResource(path);
        try {
            img = ImageIO.read(u);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return img;
    }

    public static void main(String[] args) {
        Image img = GameUtil.getImage("images\\plane.png");
        System.out.println(img);
    }

}

老师, 我想知道为什么这里载入失败了

JAVA 全系列/第一阶段:JAVA 快速入门/飞机大战小项目训练 2490楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

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