/********************************************************************
 file name :  g:/工具源码/Android

author  :   陈泽丹

created  : 10:6:2011   16:09
 purpose  : 
*********************************************************************/

方法:  接口+组合

理由:通过接口实现客户端的使用时多继承类的多类, 通过组合实现客户端内部类的实现相关功能(而且有些共用的功能可以不总是多次实现)。

public interface GMapObserverDec
{
 public void initTarget();
 public void uninitTarget();
 public void  updateObserver();
}

public abstract class GMapObserverDef  implements GMapObserverDec
{
 protected GMapTargetDec m_pGMapTarget = null;
 public GMapObserverDef(GMapTargetDec pGMapTarget)
 {
  m_pGMapTarget = pGMapTarget;
 }
 public void initTarget()
 {
  m_pGMapTarget.attach(this);
 }
 public void uninitTarget()
 {
  m_pGMapTarget.detach(this);
 }
 abstract public void updateObserver();
}

//----------------------------------------------------------------------多继承-------------

public class GMapPerson extends Overlay implements GMapObserverDec
{
 GMapPerson(LocationBlog pLocationBlog)
 {
  m_pGMapObserver = new GMapObserverEx(pLocationBlog);
 }

//------------------------------- 多继承语法要求的冗余代码 ------------------
 class GMapObserverEx extends GMapObserverDef
 {
  public GMapObserverEx(GMapTargetDec pGMapTarget)
  {
   super(pGMapTarget);
   // TODO Auto-generated constructor stub
  }

@Override
  public void updateObserver()
  {
   // TODO Auto-generated method stub
   System.out.print("GMapPerson! /n");
   //GMapPerson.this.updateObserver();
  }
 }
 public void initTarget()
 {
  // TODO Auto-generated method stub
  m_pGMapObserver.initTarget();
 }
 public void uninitTarget()
 {
  // TODO Auto-generated method stub
  m_pGMapObserver.uninitTarget();
 }
 public void updateObserver()
 {
  m_pGMapObserver.updateObserver();
 }
 GMapObserverEx m_pGMapObserver = null;
 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}

其中几个语法点:

1, 内部类访问外部类要: 用“类名.this.函数”这样的形式,例如GMapPerson.this.updateObserver();

2, 一个类继承了另一个类的内部类,因为超类是内部类,而内部类的构造方法不能自动
被调用,这样就需要在子类的构造方法中明确的调用超类的构造方法。
接上例:
class C extends A.B {
C() {
    new A().super();  // 这一句就实现了对内部类构造方法的调用。
}
}
构造方法也可这样写:
C(A a) {
    a.super();
}  // 使用这个构造方法创建对象,要写成C c = new C(a); a是A的对象。

Java 实现多继承相关推荐

  1. java 的继承_关于java中的继承

    我们都知道Java中的继承是复用代码.扩展子类的一种方式,继承使得Java中重复的代码能够被提取出来供子类共用,对于Java程序的性能以及修改和扩展有很大的意义,所以这是一个非常重要的知识点. 那么对 ...

  2. 零基础Java学习之继承

    继承 继承的概述 继承的理解 继承的好处 继承的格式 继承的特点一:成员变量 私有化(private) 成员变量不重名 成员变量重名 继承的特点二:成员方法 成员方法不重名 成员方法重名--重写(Ov ...

  3. Java异常以及继承的一些问题

    Java异常以及继承的一些问题 参考文章: (1)Java异常以及继承的一些问题 (2)https://www.cnblogs.com/rookieJW/p/8059864.html 备忘一下.

  4. java容器类的继承结构

    摘要: java容器类的继承结构 Java容器类库定义了两个不同概念的容器,Collection和Map Collection 一个独立元素的序列,这些元素都服从一条或多条规则.List必须按照插入的 ...

  5. java自学手记——继承

    java面向对象三大特点封装.继承和多态.继承作为三大特点之一,主要是为了实现多态的,即多态的前提条件是继承.代码示例: 1 class Person{ 2 String name; 3 String ...

  6. Java基础:继承、多态、抽象、接口

    第一讲    继承 一.继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 2.通过extends关键字可以实现类与类的 ...

  7. java面向对象——包+继承+多态(一)

    文章目录 包(package) 概念: 创建包 注意事项: 导入包中的类: 直接导入 import语句导入 注意事项: 静态导入(了解即可) 包的访问权限 常见的系统包 继承 继承的语法规则 注意要点 ...

  8. Java类的继承总结

                       本文主要是讲述Java类的继承,更多Java技术知识,请登陆疯狂软件教育官网.加疯狂软件官方微信号:fkitorg,免费赢大奖,有机会赢得iOS培训课程一套. 在 ...

  9. 腾讯架构师讲解Java接口的继承与抽象类

    在实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体.interface为类提供了接口规范. 在继承中,我们为了提高程序的可复用性,引入的继承机制.当时的 ...

  10. java中抽象类继承抽象类_用Java中的抽象类扩展抽象类

    java中抽象类继承抽象类 示例问题 当我创建Java :: Geci抽象类AbstractFieldsGenerator和AbstractFilteredFieldsGenerator我遇到了一个不 ...

最新文章

  1. 利用JDBC连接数据库(MySQL)
  2. 单实例单向rac搭建gg流
  3. 【C++探索之旅】第一部分第四课:内存,变量和引用
  4. linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程
  5. python面向对象中的私有属性和私有化方法
  6. 输入234输出432的c语言程序,C程序设计第1-4章习题集
  7. cp210x驱动运行不了怎么解决_【问题】解决Android8.0以上运行不了uiautomatorviewer的办法...
  8. 电影'社交网络'获金球奖最佳影片,最佳编剧,最佳导演,最佳配乐奖
  9. Python的一些单行代码(摘抄)
  10. Freeswitch配置:一台Freeswitch向另外一台Freeswitch转发视频会议命令
  11. Android 救援模式(Rescue Mode)原理剖析
  12. vue中的事件修饰符.self、.capture和.passive
  13. 【python】sys模块操作使用
  14. fiddler4在win7抓取https的配置整理
  15. 算法:买卖股票最佳时机(c++)
  16. Mac突然连不上WiFi解决步骤
  17. 《微型计算机原理与接口技术》期末总复习 —— 一篇匆匆忙忙的复习笔记
  18. Buildroot 制作根文件系统
  19. 为什么公有云在中国落地难
  20. 软件系统产品信息安全功能点要求

热门文章

  1. 单精度浮点型(float)和双精度浮点型(double)的区别
  2. Keras Tuner模型自动超参数调优
  3. linux和乌班图和麒麟系统,UbuntuKylin 和麒麟系统是两支不同渠道的系统
  4. 企业落地级jmeter性能测试,结果分析以及报告(4-3)
  5. JavaWeb开发概览
  6. 【tomcat】使用jks配置https
  7. HTTP、HTTPS
  8. MySQL: 彻底删除数据库
  9. 清除数据库中所有数据
  10. 容器云职业技能大赛 不一样的比赛