刷题的狂欢-----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每日三练-----第二天的主要内容,如果未能解决你的问题,请参考以下文章