刷题的狂欢-----JAVA每日三练-----第二天

努力刷题,每日三题,题目来源于《Java课后实战训练手册》----清华大学出版社。

第一题
创建Shape(图形)类,该类中有一个计算面积的方法。圆形和矩形都继承自图形类,输出圆形和矩形的面积,实现效果如图所示。
在这里插入图片描述

先定义我们的测试类:

package shape;

public class Test {
    public static void main(String[] args) {
        Circle circle = new Circle(3);
        Rectangle rectangle = new Rectangle(2,5);
        System.out.println("圆形的面积是"+circle.area());
        System.out.println("矩形的面积是"+rectangle.area());
    }
}

再定义圆形和矩形的父类,也就是图形类:

package shape;

public abstract class shape {

    public abstract double  area();
}

再定义矩形类和圆形类:

package shape;//矩形类

public class Rectangle {
    double length;
    double width;

    public Rectangle(double length,double width) {
        this.length = length;
        this.width = width;
    }

    public double area(){
        return this.length*this.width;
    }
}

package shape;//圆形类

public class Circle extends shape{
    double r;

    public Circle(double r) {
        this.r = r;
    }

    public double area(){
        return Math.PI*this.r*this.r;
    }

}

第二题
创建抽象类烟花(Fireworks)类,该类中有一个抽象的爆炸方法 boom(),使用匿名内部类实现点燃红色烟花并爆炸的效果。这样的需求该如何实现?注意:每个爆竹只能调用一次boom()方法,实现效果如图所示。
在这里插入图片描述

//标准答案
abstract class Fireworks {
	abstract void boom();
}

public class BoomFireworks {
	public static void main(String[] args) {
		new Fireworks() {
			void boom() {
				System.out.println("红色的烟花照亮天空");
			}
		}.boom();//这种写法在网上没有找到
	}
}



PS: 没有了解过匿名内部类,在此进行补充:
参考资料:https://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html

匿名内部类也就是没有名字的内部类
正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写
但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口

笔者答案:

abstract class Fireworks {
    public abstract void boom();
}

public class Demo {
    public static void main(String[] args) {
        Fireworks fireworks = new Fireworks() {
            public void boom() {
                System.out.println("红色的烟花照亮天空");
            }
        };
        fireworks.boom();
    }
}

第三题
设计钟表类,钟表有一个静态的获取时间方法,此方法与钟表的结构、样式、价格无关,运行结果如图所示。
在这里插入图片描述

public class Clock {

    double price;
    String structure;
    String style;

    public Clock(String structure,String style,double price){
        this.structure = structure;
        this.style = style;
        this.price = price;
    }

    static public void Time(){
        System.out.println("当前时间:10点10分");
    }
    public static void main(String[] args) {
         Clock JiXie = new Clock("机械","钟",189.99);
         System.out.println(JiXie.structure+JiXie.style+"的价格是"+JiXie.price+"RMB");
         Time();
         Clock ShiYing = new Clock("石英","手表",69);
         System.out.println(ShiYing.structure+ShiYing.style+"的价格是"+ShiYing.price+"RMB");
         Time();
    }
}

好好学一门语言,感谢你的支持!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码的xiaolang

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值