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

Posted 敲代码的xiaolang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题的狂欢-----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();
    }
}

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

以上是关于刷题的狂欢-----JAVA每日三练-----第二天的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

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