【Java每日一题】——第四十四题:综合案例:编程模拟智能手机和普通手机功能。

简介: 【Java每日一题】——第四十四题:综合案例:编程模拟智能手机和普通手机功能。

🎯问题:


(1)搭建项目架构


       (a)编写手机的父类HandSet,封装属性品牌和型号,提供公有的取值和赋值方法,编写显示手机品牌和型的方法并实现方法体;


       (b)编写打电话和发短信的抽象方法call()和sendInfo()。


(2)编写接口模拟手机的功能


   (a)编写连接网络的接口NetWork,定义上网的方法networkConn();


   (b)编写拍照的接口TakePictures,定义拍照的方法takePicture();


   (c)编写播放的接口Play,定义播放内容的方法play(String incontent);


(3)使用继承父类和实现接口的方式模拟手机功能


       (a)新建普通手机类CommonHandSet继承父类HandSet,实现播放的接口Play;


       (b)编写带参、无参构造方法用于提供创建CommonHandSet对象的方式;


       (c)实现父类中的方法sendInfo()和call(),接口中的方法play(String incontent);


       (d)新建智能手机类AptitudeHandSet继承父类HandSet,实现播放的接口Play、连接网络的接口Network,拍照的接口TakePictures;


       (e)编写带参,无参构造方法用于提供创建AptitudeHandSet对象的方式;


       (f)实现父类中的方法sendInfo()和call(),实现接口中的方法play(String incontent)、takePicture()和networkConn();


       (g)编写测试类Test,分别创建CommonHandSet和AptitudeHandSet类的对象,调用相应方法进行测试。测试结果如图所示。

116a196ac1791dacece28ef8f737acf9_6f9ad758a598480f908b3586a473666a.png

🎯 答案:

package file3;
abstract class HandSet{
  private String Brand;
  private String Model;
  
  public HandSet() {
    super();
  }
  
  public HandSet(String brand, String model) {
    super();
    Brand = brand;
    Model = model;
  }
 
  public String getBrand() {
    return Brand;
  }
  public void setBrand(String brand) {
    Brand = brand;
  }
  public String getModel() {
    return Model;
  }
  public void setModel(String model) {
    Model = model;
  }
  @Override
  public String toString() {
    return "这是一款型号为"+Model+"的"+Brand+"的手机!";
  }
  abstract void call();
  abstract void sendInfo();
}
interface NetWork{
  void networkConn();
}
interface TakePictures{
  void takePicture();
}
interface Play{
  void play(String incontent);
}
class CommonHandSet extends HandSet implements Play{
  public CommonHandSet() {
    super();
    // TODO Auto-generated constructor stub
  }
 
  public CommonHandSet(String brand, String model) {
    super(brand, model);
    // TODO Auto-generated constructor stub
  }
  @Override
  void call() {
    // TODO Auto-generated method stub
    System.out.println("语音通话。。。");
  }
 
  @Override
  void sendInfo() {
    // TODO Auto-generated method stub
    System.out.println("发送文字信息。。。。");
  }
  @Override
  public void play(String incontent) {
    // TODO Auto-generated method stub
  System.out.println(incontent);  
  }
}
class AptitudeHandSet extends HandSet implements Play,NetWork,TakePictures{
 
  public AptitudeHandSet() {
    super();
    // TODO Auto-generated constructor stub
  }
 
  public AptitudeHandSet(String brand, String model) {
    super(brand, model);
    // TODO Auto-generated constructor stub
  }
 
  @Override
  public void takePicture() {
    // TODO Auto-generated method stub
    System.out.println("咔嚓.....拍照成功");
  }
 
  @Override
  public void networkConn() {
    // TODO Auto-generated method stub
    System.out.println("成功连入网络。。。。");
  }
 
  @Override
  public void play(String incontent) {
    // TODO Auto-generated method stub
    System.out.println("正在播放"+incontent);
  }
 
  @Override
  void call() {
    // TODO Auto-generated method stub
    System.out.println("视频通话。。。");
  }
 
  @Override
  void sendInfo() {
    // TODO Auto-generated method stub
    System.out.println("发送图文彩信。。。。。");
  }
}
public class Test {
 
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    CommonHandSet c=new CommonHandSet("苹果", "666");
    AptitudeHandSet a=new AptitudeHandSet("华为", "777");
    System.out.println("-------普通手机----------");
    System.out.println(c.toString());
    c.sendInfo();
    c.call();
    c.play("播放歌曲:《东方红》");
    System.out.println("---------智能手机--------------");
    System.out.println(a.toString());
    a.sendInfo();
    a.call();
    a.networkConn();
    a.takePicture();
    a.play("正在播放电视剧:《赘婿》");
  }
 
}


💛废话文学:

Java的优势:


跨平台性: Java是一种跨平台的编程语言,即一次编写,到处运行。Java程序在不同的操作系统上具有很高的移植性,这使得开发人员能够通过Java开发应用程序,无需担心底层操作系统的差异。


面向对象: Java是一种面向对象的编程语言,支持封装、继承和多态等面向对象的特性。这种编程范式使得代码可以更加模块化、可重用,并且有助于提高代码的可维护性和可扩展性。


强大的生态系统: Java拥有丰富的标准库和第三方库,提供了各种功能强大的工具和框架,如Spring、Hibernate和JUnit等。这些工具和框架使得Java开发人员能够更加高效地开发应用程序,并提供了解决特定问题的解决方案。


多线程支持: Java内置了对多线程编程的支持,使得开发人员可以轻松地创建并发应用程序。多线程编程可以有效地利用多核处理器的性能,并提高程序的响应速度和吞吐量。


安全性: Java拥有严格的安全机制,包括字节码验证、安全管理器和安全沙箱等,可以防止恶意代码对系统的破坏。这使得Java成为开发安全性要求较高的应用程序的理想选择。

相关文章
|
3月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
266 1
|
3月前
|
Java
如何在Java中进行多线程编程
Java多线程编程常用方式包括:继承Thread类、实现Runnable接口、Callable接口(可返回结果)及使用线程池。推荐线程池以提升性能,避免频繁创建线程。结合同步与通信机制,可有效管理并发任务。
206 6
|
4月前
|
SQL Java 数据库
2025 年 Java 从零基础小白到编程高手的详细学习路线攻略
2025年Java学习路线涵盖基础语法、面向对象、数据库、JavaWeb、Spring全家桶、分布式、云原生与高并发技术,结合实战项目与源码分析,助力零基础学员系统掌握Java开发技能,从入门到精通,全面提升竞争力,顺利进阶编程高手。
918 0
|
3月前
|
安全 前端开发 Java
从反射到方法句柄:深入探索Java动态编程的终极解决方案
从反射到方法句柄,Java 动态编程不断演进。方法句柄以强类型、低开销、易优化的特性,解决反射性能差、类型弱、安全性低等问题,结合 `invokedynamic` 成为支撑 Lambda 与动态语言的终极方案。
195 0
|
4月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
500 100
|
4月前
|
传感器 机器学习/深度学习 算法
【室内导航通过视觉惯性数据融合】将用户携带的智能手机收集的惯性数据与手机相机获取的视觉信息进行融合研究(Matlab代码实现)
【室内导航通过视觉惯性数据融合】将用户携带的智能手机收集的惯性数据与手机相机获取的视觉信息进行融合研究(Matlab代码实现)
211 2
|
4月前
|
NoSQL Java 关系型数据库
超全 Java 学习路线,帮你系统掌握编程的超详细 Java 学习路线
本文为超全Java学习路线,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架(如Spring Boot)、数据库(MySQL、Redis)及项目实战等内容,助力从零基础到企业级开发高手的进阶之路。
402 1
|
4月前
|
存储 数据可视化 Java
Java Stream API 的强大功能
Java Stream API 是 Java 8 引入的重要特性,它改变了集合数据的处理方式。通过声明式语法,开发者可以更简洁地进行过滤、映射、聚合等操作。Stream API 支持惰性求值和并行处理,提升了代码效率和可读性,是现代 Java 开发不可或缺的工具。
113 0
Java Stream API 的强大功能
|
7月前
|
Java 数据库连接 API
2025 更新必看:Java 编程基础入门级超级完整版指南
本教程为2025更新版Java编程基础入门指南,涵盖开发环境搭建(SDKMAN!管理JDK、VS Code配置)、Java 17+新特性(文本块、Switch表达式增强、Record类)、面向对象编程(接口默认方法、抽象类与模板方法)、集合框架深度应用(Stream API高级操作、并发集合)、模式匹配与密封类等。还包括学生成绩管理系统实战项目,涉及Maven构建、Lombok简化代码、JDBC数据库操作及JavaFX界面开发。同时提供JUnit测试、日志框架使用技巧及进阶学习资源推荐,助你掌握Java核心技术并迈向高级开发。
819 5
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin