Java抽象类、接口与嵌套类

接口MobilePhone定义了以下方法:
void on(); // 开机
void off(); // 关机
void charge(); // 充电
分别采用如下两种方式创建两个实现MobilePhone接口的类的对象,并在测试类中分别对这两个对象调用上述方法。
① 编写类IPhone实现MobilePhone接口。
② 使用实现了MobilePhone接口的匿名内部类。
③ 使用实现了MobilePhone接口的Lambda表达式。

ChatGPT尝试为您解答,仅供参考
① 编写类IPhone实现MobilePhone接口

首先,我们需要定义MobilePhone接口:

public interface MobilePhone {
  void on();
  void off();
  void charge();
}

然后,我们可以编写IPhone类来实现MobilePhone接口:

public class IPhone implements MobilePhone {
  @Override
  public void on() {
    // 开机操作
  }

  @Override
  public void off() {
    // 关机操作
  }

  @Override
  public void charge() {
    // 充电操作
  }
}

在测试类中,我们可以创建IPhone对象并调用它的方法:

MobilePhone phone = new IPhone();
phone.on();
phone.off();
phone.charge();

② 使用实现了MobilePhone接口的匿名内部类

我们也可以使用匿名内部类来实现MobilePhone接口:

MobilePhone phone = new MobilePhone() {
  @Override
  public void on() {
    // 开机操作
  }

  @Override
  public void off() {
    // 关机操作
  }

  @Override
  public void charge() {
    // 充电操作
  }
};

phone.on();
phone.off();
phone.charge();

③ 使用实现了MobilePhone接口的Lambda表达式

在Java 8中,我们还可以使用Lambda表达式来实现MobilePhone接口:

MobilePhone phone = () -> {
  // 开机操作
};

phone.on();
phone.off();
phone.charge();

在这种情况下,我们只需要提供on()方法的实现,因为它是唯一需要实现的方法。另外两个方法off()和charge()的实现可以留空。

注意:使用Lambda表达式实现MobilePhone接口时,需要确保接口中的所有方法都被实现。否则,将会收到编译错误。

例如,我们可以这样使用Lambda表达式实现MobilePhone接口:

MobilePhone phone = () -> {
  // 开机操作
};

phone.on();
phone.off();
phone.charge();

在这种情况下,我们需要提供on()、off()和charge()方法的实现。

另外,我们还可以使用Lambda表达式实现MobilePhone接口的部分方法:

MobilePhone phone = new MobilePhone() {
  @Override
  public void on() {
    // 开机操作
  }

  @Override
  public void charge() {
    // 充电操作
  }
};

phone.on();
phone.charge();

在这种情况下,我们只需要提供on()和charge()方法的实现,off()方法的实现可以留空。

具体代码实现如下,望采纳

① 编写类IPhone实现MobilePhone接口。

// 定义MobilePhone接口
interface MobilePhone {
  void on(); // 开机
  void off(); // 关机
  void charge(); // 充电
}

// 实现MobilePhone接口的IPhone类
class IPhone implements MobilePhone {
  @Override
  public void on() {
    System.out.println("IPhone is turning on.");
  }

  @Override
  public void off() {
    System.out.println("IPhone is turning off.");
  }

  @Override
  public void charge() {
    System.out.println("IPhone is charging.");
  }
}

// 测试类
public class Test {
  public static void main(String[] args) {
    // 创建IPhone对象
    MobilePhone phone = new IPhone();

    // 调用IPhone的方法
    phone.on();
    phone.off();
    phone.charge();
  }
}

② 使用实现了MobilePhone接口的匿名内部类。

// 定义MobilePhone接口
interface MobilePhone {
  void on(); // 开机
  void off(); // 关机
  void charge(); // 充电
}

// 测试类
public class Test {
  public static void main(String[] args) {
    // 创建MobilePhone的匿名内部类对象
    MobilePhone phone = new MobilePhone() {
      @Override
      public void on() {
        System.out.println("Phone is turning on.");
      }

      @Override
      public void off() {
        System.out.println("Phone is turning off.");
      }

      @Override
      public void charge() {
        System.out.println("Phone is charging.");
      }
    };

    // 调用phone的方法
    phone.on();
    phone.off();
    phone.charge();
  }
}

③ 使用实现了MobilePhone接口的Lambda表达式。

// 定义MobilePhone接口
interface MobilePhone {
  void on(); // 开机
  void off(); // 关机
  void charge(); // 充电
}

// 测试类
public class Test {
  public static void main(String[] args) {
    // 使用Lambda表达式创建MobilePhone对象
    MobilePhone phone = () -> {
      System.out.println("Phone is turning on.");
    }, () -> {
      System.out.println("Phone is turning off.");
    }, () -> {
      System.out.println("Phone is charging.");
    };

    // 调用phone的方法
    phone.on();
    phone.off();
    phone.charge();
  }
}