1.划火柴 定义一个点燃接口,再定义一个火柴类实现点燃接口,每根火柴对象只能调用一次点燃方法,这种对象该如何创建?
答案:
interface Light {
public void light();
}
public class Match implements Light {
public static void main(String[] args) {
new Light (){
public void light() {
System.out.println("一根火柴被点燃了……");
}
}.light();
}
@Override
public void light() {
}
}
2.跳动的心脏 心脏是动物的重要器官,不断跳动的心脏就意味着鲜活的生命力。现在创建一个人类,把心脏设计为人类里面的一个成员内部类。心脏类有一个跳动的方法,在一个人被创建时,心脏就开始不断地跳动。
答案:
class People { // 人类
final Heart heart = new Heart(); // 心脏属性
public People() { // 构造人类对象
heart.beating(); // 心脏开始跳动
}
class Heart { // 人类内部的心脏类
public void beating() { // 跳动
System.out.println("心脏:扑通扑通……");
}
}
}
public class Demo {
public static void main(String[] args) {
new People();
}
}
3.吃水果 创建一个抽象的水果类,类中有一个获取水果名称的抽象方法。创建人类,人类中有一个吃的方法,参数类型为水果类型,执行该方法后可以再控制台上输出吃了什么。请用匿名内部类创建吃方法的参数,让人类吃苹果和香蕉。
答案:
abstract class Fruits {
public abstract String getName();
}
class Human {
void eat(Fruits food) {
System.out.println("吃了一个" + food.getName());
}
}
public class Demo {
public static void main(String[] args) {
Human tom = new Human();
tom.eat(new Fruits() {
public String getName() {
return "苹果";
}
});
tom.eat(new Fruits() {
public String getName() {
return "香蕉";
}
});
}
}
4.匿名类实现让小狗跑 参照下面的代码,创建Moveable接口的匿名子类对象,重写run()方法,执行该方法后会在控制台上输出“小狗向前跑”的字样。
答案:
interface Moveable{
void run();
}
public class Demo {
public static void main(String[] args) {
Moveable dog = new Moveable() {
public void run() {
System.out.println("小狗向前跑");
}
};
dog.run();
}
}