当前位置: 首页 > news >正文

经典面试题1

问:有A和B两个普通类,如何在C类中实现A、B两个类的方法?

 分析:“实现”这个两个字在java中,指的是一个类继承抽象类或实现接口时,必须去实现抽象类的抽象方法或实现接口的所有方法,这里实现也有重写的意思。

         那么 A和B都是普通类,要实现他们的方法就是继承了。

         可是问题又来了,java中只能单继承,无法让C同时继承A、B两个类。

 

解决:在java中解决单继承问题,一般是使用接口,其实解决单继承外还有一个方法,那就是内部类。

         内部类会在之后篇文章详解。

         内部类有个特点:外围类和内部类可以相互共享资源。

         正是因为内部类有这个特点,第一步就可以在C类中创建两个内部类分别继承A、B。

         如下:

               class A{

                     void fa(){

                     }

      }

               class B{

                     void fb(){

                     }

      }

               class C {

        InnerA extends A{

                     void fa(){    System.out.println("实现A类的方法");   }

                  }

                  InnerA extends A{

                     void fb(){    System.out.println("实现B类的方法");    }

                  }

     }

              第二步,为了在其他类中使用C类实现A、B的方法,将两个内部类作为C类的属性。

              如下:

                  class C {

                     InnerA a=new InnerA();

                     InnerB b=new InnerB();

          InnerA extends A{

                     void fa(){    System.out.println("实现A类的方法");   }

                    }

                    InnerA extends A{

                     void fb(){    System.out.println("实现B类的方法");    }

                   }

     }

             第三步,如何调用

             在主方法中使用:

             C c=new C();

             c.a.fa();//输出:实现A类的方法

             c.b.fb();//输出:实现B类方法

            

 

转载于:https://www.cnblogs.com/xingege/p/4051852.html

相关文章:

  • JAVA学习路线 零基础新手必备
  • Flask+jinja2 开发Puppet用户和节点管理系统
  • 痞子衡嵌入式:如果i.MX RT是一匹悍马,征服它时别忘了用马镫MCUBootUtility
  • 武汉大学2014年基础数学复试试题参考解答
  • chown: changing ownership of `.': Invalid argument
  • 面试题:数组原型上实现一个去重的方法
  • ×××案例之一路由之间的×××
  • Spring Framework 5.2.0.M1 发布
  • [詹兴致矩阵论习题参考解答]习题2.5
  • BF-9000 BMC任务关键型应急通信系统
  • appium如何切换键盘
  • 关于ios 8 7 下的模态窗口大小的控制 代碼+場景(mainstoryboard)( Resizing UIModalPresentationFormSheet )...
  • Metasploit运行环境内存不要低于2GB
  • mysql5.5升级5.6
  • html网站网址一键打包成App平台-开心App平台
  • [译]前端离线指南(上)
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • ES6 学习笔记(一)let,const和解构赋值
  • PHP变量
  • quasar-framework cnodejs社区
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 微信支付JSAPI,实测!终极方案
  • 项目实战-Api的解决方案
  • 用jQuery怎么做到前后端分离
  • 原生js练习题---第五课
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 阿里云服务器购买完整流程
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (vue)页面文件上传获取:action地址
  • (阿里云万网)-域名注册购买实名流程
  • (二十四)Flask之flask-session组件
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (接口封装)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • /var/lib/dpkg/lock 锁定问题
  • @KafkaListener注解详解(一)| 常用参数详解
  • @ModelAttribute使用详解
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [ C++ ] STL_list 使用及其模拟实现
  • [ C++ ] STL---仿函数与priority_queue
  • [<死锁专题>]
  • [Angularjs]ng-select和ng-options
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [c++] C++多态(虚函数和虚继承)
  • [C++][基础]1_变量、常量和基本类型
  • [C++]Leetcode17电话号码的字母组合
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [Docker]五.Docker中Dockerfile详解