黑马程序员技术交流社区

标题: 内部类继承 [打印本页]

作者: 杨盼    时间: 2012-2-28 20:01
标题: 内部类继承
内部类如何继承,什么情况下会用到内部类继承,求详解
作者: 李晓俊老师    时间: 2012-2-28 20:07
这种情况在java中很少见把,到现在我还没见到一个,如果父类的内部类在成员位置上,那就和普通成员被继承是一样的,,
如果在方法里,这个就不晓得了
作者: 周峰    时间: 2012-2-28 20:11
我只知道 内部匿名类会在开发Android里面经常用!~ 要是开发Java网页  用的少!~
作者: 田啸    时间: 2012-2-28 20:13
我说一下我知道需要用到内部类的情况:
当你定义的类需要进行多继承时,就需要用到内部类.java中的内部类和接口加在一起,可以的解决常被C++程序员抱怨java中存在的一个问题——没有多继承。实际上,C++的多继承设计起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果。

作者: 田啸    时间: 2012-2-28 20:19
这样啊,我具体举个例子:类一
  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的方法和属性,也就间接地实现了多继承。
作者: 杨盼    时间: 2012-2-28 21:10
田啸 发表于 2012-2-28 20:19
这样啊,我具体举个例子:类一
  Java code
  public class Example1 {

在什么情况下用呢?
作者: 田啸    时间: 2012-2-28 21:17
现在我们手头有铅笔和橡皮擦类,想做一个带橡皮擦的铅笔类,该怎么办?

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

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

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

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

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2