1.接口中的默认方法用实现类对象去调用
2.如果默认方法改成静态方法,则可以用接口名调用,结果都一样
3.RemoteControl类不需要继承TV类,因为在一个包下,用void controlTV(TV tv) {…}方法形参的方式也可以传入tv对象,调用TV的方法,不需要new TV()
a. 定义电视类TV
1) 成员变量:名称name (String型)
2) 构造方法:空参,满惨构造方法
3) 成员方法:void play(String channel),方法内,打印输出“xx电视正在播放xxx节目”(channel表示电视节目))
b. 定义接口RedRay
1) 定义抽象方法:void controlTV(TV tv)
2) 定义默认方法:void connecting(),方法内打印输出“外接设备连接成功,可以使用红外线”
c. 定义遥控器类RemoteControl
1) 成员方法:void controlTV(TV tv ) 方法内输出“遥控器控制电视”,然后提示用户键盘录入一个字符串作为电视节目信息,调用tv的play方法,将节目信息作为参数传入
d. 定义手机类Phone,实现RedRay接口
1) 重写controlTV方法:
方法内输出“手机开启红外线功能,控制电视”
提示用户键盘录入电视节目信息并接受
调用电视play方法,将节目信息作为参数传入
e. 定义测试类TVtest,在main方法实现以下功能
创建TV对象
创建RemoteControl对象调用其controlTVde 方法
创建Phone对象,调用其connecting方法和controlTV方法
TV.java
package exam;
public class TV {
private String name;
public TV(String name) {
this.name = name;
}
public String getName() {
return name;
}
void play(String channel) {
System.out.println(name + "电视正在播放" + channel + "节目");
}
}
RedRay.java
package exam;
public interface RedRay {
void controlTV(TV tv);
//static void connecting() {
default void connecting() {
System.out.println("外接设备连接成功,可以使用红外线");
}
}
RemoteControl.java
package exam;
import java.util.Scanner;
public class RemoteControl {
void controlTV(TV tv) {
System.out.println("遥控器控制电视");
Scanner scanner = new Scanner(System.in);
System.out.print("请输入节目名称: ");
String channel = scanner.next();
tv.play(channel);
}
}
或者这么写,麻烦
package exam;
import java.util.Scanner;
public class RemoteControl {
void controlTV(TV tv){
System.out.println("遥控器控制电视");
Scanner scanner = new Scanner(System.in);
System.out.print("请输入节目名称: ");
String channel = scanner.next();
new TV(tv.getName()).play(channel);
}
}
Phone.java
package exam;
import java.util.Scanner;
public class Phone implements RedRay{
@Override
public void controlTV(TV tv) {
System.out.println("手机开启红外线功能,控制电视");
Scanner scanner = new Scanner(System.in);
System.out.print("请输入节目名称: ");
String channel = scanner.next();
new TV(tv.getName()).play(channel);
}
}
TVtest.java
package exam;
public class TVtest {
public static void main(String[] args) {
TV tv = new TV("海尔");
new RemoteControl().controlTV(tv);
System.out.println("==============");
TV tv1 = new TV("松下");
//RedRay.connecting();
new Phone().connecting();
new Phone().controlTV(tv1);
}
}