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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵永康 中级黑马   /  2012-9-22 10:13  /  1223 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本人今天在复习继承的时候,突发奇想想到了一种情况,大家看看代码
class A
{
       class B
     {
     }
}
class C extends A
{
}
然后,类ABC里面具体代码我就不写了,我的疑问就是B是A的内部类,是成员内部类,那么C继承了A,C是不是就可以把A的内部类B也能继承过来吗?包括B的成员变量和方法
那么当B时A的局部内部类的时候,又是什么情况呢??求解!!!哪位对继承特别明白的可以给指点下啊

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
这样一个类:
  1. public class A  {
  2.         public int ax;
  3.        
  4.         public class B {
  5.                 public int bx;
  6.                 void printBx(){}
  7.         }
  8. }
复制代码
再来一个C类:
  1. public class C extends A {

  2. }
复制代码
验证:
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 A a = new A();
  4.                 Class clazz =a.getClass();
  5.                
  6.                 Field[] fields = clazz.getFields();
  7.                 System.out.println(fields.length);
  8.                 for(Field f:fields){
  9.                         System.out.println(f.getName());
  10.                 }

  11.                 C c = new C();
  12.                 clazz =c.getClass();
  13.                
  14.                 fields = clazz.getFields();
  15.                 System.out.println(fields.length);
  16.                 for(Field f:fields){
  17.                         System.out.println(f.getName());
  18.                 }
  19.                
  20.         }

  21. }
复制代码
结果:
1
ax
1
ax

得到两个结论:
1.通过反射无法获得内部类;
2.继承无法得到内部类。
回复 使用道具 举报
张 涛 发表于 2012-9-22 10:47
这样一个类:再来一个C类:验证:结果:
1
ax

非常感谢 今天这教了我一招 不慎感谢 还是黑马牛人多啊 呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马