【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成为开发安全性要求较高的应用程序的理想选择。

相关文章
|
4天前
|
Kubernetes 负载均衡 Java
k8s的出现解决了java并发编程胡问题了
Kubernetes通过提供自动化管理、资源管理、服务发现和负载均衡、持续交付等功能,有效地解决了Java并发编程中的许多复杂问题。它不仅简化了线程管理和资源共享,还提供了强大的负载均衡和故障恢复机制,确保应用程序在高并发环境下的高效运行和稳定性。通过合理配置和使用Kubernetes,开发者可以显著提高Java应用程序的性能和可靠性。
51 31
|
5天前
|
Java 编译器 开发者
注解的艺术:Java编程的高级定制
注解是Java编程中的高级特性,通过内置注解、自定义注解及注解处理器,可以实现代码的高度定制和扩展。通过理解和掌握注解的使用方法,开发者可以提高代码的可读性、可维护性和开发效率。在实际应用中,注解广泛用于框架开发、代码生成和配置管理等方面,展示了其强大的功能和灵活性。
54 25
|
1月前
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
322 12
|
7天前
|
Java 开发工具
课时6:Java编程起步
课时6:Java编程起步,主讲人李兴华。课程摘要:介绍Java编程的第一个程序“Hello World”,讲解如何使用记事本或EditPlus编写、保存和编译Java源代码(*.java文件),并解释类定义、主方法(public static void main)及屏幕打印(System.out.println)。强调类名与文件名一致的重要性,以及Java程序的编译和执行过程。通过实例演示,帮助初学者掌握Java编程的基本步骤和常见问题。
|
3月前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
3月前
|
算法 Java 调度
java并发编程中Monitor里的waitSet和EntryList都是做什么的
在Java并发编程中,Monitor内部包含两个重要队列:等待集(Wait Set)和入口列表(Entry List)。Wait Set用于线程的条件等待和协作,线程调用`wait()`后进入此集合,通过`notify()`或`notifyAll()`唤醒。Entry List则管理锁的竞争,未能获取锁的线程在此排队,等待锁释放后重新竞争。理解两者区别有助于设计高效的多线程程序。 - **Wait Set**:线程调用`wait()`后进入,等待条件满足被唤醒,需重新竞争锁。 - **Entry List**:多个线程竞争锁时,未获锁的线程在此排队,等待锁释放后获取锁继续执行。
98 12
|
3月前
|
存储 安全 Java
Java多线程编程秘籍:各种方案一网打尽,不要错过!
Java 中实现多线程的方式主要有四种:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口和使用线程池。每种方式各有优缺点,适用于不同的场景。继承 Thread 类最简单,实现 Runnable 接口更灵活,Callable 接口支持返回结果,线程池则便于管理和复用线程。实际应用中可根据需求选择合适的方式。此外,还介绍了多线程相关的常见面试问题及答案,涵盖线程概念、线程安全、线程池等知识点。
279 2
|
4月前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
4月前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
52 1
|
4月前
|
Java 数据处理 开发者
Java多线程编程的艺术:从入门到精通####
【10月更文挑战第21天】 本文将深入探讨Java多线程编程的核心概念,通过生动实例和实用技巧,引导读者从基础认知迈向高效并发编程的殿堂。我们将一起揭开线程管理的神秘面纱,掌握同步机制的精髓,并学习如何在实际项目中灵活运用这些知识,以提升应用性能与响应速度。 ####
67 3

热门文章

最新文章

  • 1
    【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
  • 2
    美团面试:手机扫描PC二维码登录,底层原理和完整流程是什么?
  • 3
    【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
  • 4
    【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
  • 5
    算法系统协同优化,vivo与港中文推出BlueLM-V-3B,手机秒变多模态AI专家
  • 6
    【AI程序员】通义灵码 AI 程序员全面上线JAVA使用体验
  • 7
    接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
  • 8
    从理论到实践:使用JAVA实现RAG、Agent、微调等六种常见大模型定制策略
  • 9
    一天成为Java开发高手:用飞算JavaAI实现十倍提效
  • 10
    【Java并发】【线程池】带你从0-1入门线程池