A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨盼 中级黑马   /  2012-2-28 20:01  /  1849 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

内部类如何继承,什么情况下会用到内部类继承,求详解

评分

参与人数 1黑马币 +1 收起 理由
老罗 + 1

查看全部评分

6 个回复

正序浏览
田啸 中级黑马 2012-2-28 21:17:11
7#
现在我们手头有铅笔和橡皮擦类,想做一个带橡皮擦的铅笔类,该怎么办?

我们可以复用上边的两个类,问题出现了,我们不能同时继承这两个类,这个时候就可以用内部类来解决这个问题。

1.使用内部类,分别继承铅笔和橡皮擦

2.分别实例化内部类作为成员变量

3.定义方法,调用实例化后内部类的方法

这样带橡皮擦的铅笔类就复用了铅笔和橡皮擦类,同时具有了他们的功能,达到了多继承的效果。 现实中这种问题很多啊,尤其是你想做一个功能比较多的实体的时候

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 赞一个!

查看全部评分

回复 使用道具 举报
田啸 发表于 2012-2-28 20:19
这样啊,我具体举个例子:类一
  Java code
  public class Example1 {

在什么情况下用呢?
回复 使用道具 举报
这样啊,我具体举个例子:类一
  Java code
  public class Example1 {
  public String getName() {
  return "luffyke" ;
  }
  }
  类二
  Java code
  public class Example2 {
  public int getAge()
  {
  return 25 ;
  }
  }
  类三
  Java code
  public class MainExample {
  public class Test1 extends Example1 {
  public String getName() {
  return super.getName();
  }
  }
  public class Test2 extends Example2 {
  public int getAge() {
  return super.getAge();
  }
  }
  public String showName() {
  return new Test1().getName();
  }
  public int showAge() {
  return new Test2().getAge();
  }
  public static void main(String args[]) {
  MainExample example = new MainExample();
  System.out.println("姓名:" + example.showName());
  System.out.println("年龄:" + example.showAge());
  }
  }
  注意看类三,里面分别实现了两个内部类 Test1,和Test2 ,Test1类又继承了Example1,Test2继承了Example2,这样我们的类三MainExample就拥有了Example1和 Example2的方法和属性,也就间接地实现了多继承。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 很给力!

查看全部评分

回复 使用道具 举报
我说一下我知道需要用到内部类的情况:
当你定义的类需要进行多继承时,就需要用到内部类.java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题——没有多继承。实际上,C++的多继承设计起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
我只知道 内部匿名类会在开发Android里面经常用!~ 要是开发Java网页  用的少!~
回复 使用道具 举报
这种情况在java中很少见把,到现在我还没见到一个,如果父类的内部类在成员位置上,那就和普通成员被继承是一样的,,
如果在方法里,这个就不晓得了

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马