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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangleixhlm 中级黑马   /  2014-5-27 22:23  /  1526 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wangleixhlm 于 2014-5-28 22:13 编辑

  1. public class OuterClass
  2. {
  3. private double d1 = 1.0;
  4. //insert code here
  5. }
复制代码
插入内部类定义在注释部分,哪几个正确,为什么?

A. class InnerOne{
public static double methoda() {return d1;}
}
B. public class InnerOne{
static double methoda() {return d1;}
}
C. private class InnerOne{
double methoda() {return d1;}
}
D. static class InnerOne{
protected double methoda() {return d1;}
}
E. abstract class InnerOne{
public abstract double methoda();
}

4 个回复

倒序浏览
题目索要补充的是一个成员位置的内部类:
1.当内部类中定义了静态成员,该内部类必须是static的。因此排除答案A,B,D
2.成员位置的内部类相当是外部类的一个成员,成员为抽象,那么外部类肯定必须定义为抽象,因此答案E错误。
正确答案是:C

楼主给分啊
回复 使用道具 举报
  1. A. class InnerOne{
  2. public static double methoda() {return d1;}
  3. }
复制代码

A选项错    内部类如果里面有静态方法则这个内部类也必须是静态的 反之不一定  B选项跟A一样一样的
内部类可以是私有的只能外部类中访问  外部类之外无法访问   C选项OK
被静态修饰的内部类访问外部类的成员的时候外部类的成员也必须是静态的  D错

E选项按2楼说的也有道理  eclipse却没报错   具体原因不知道   
楼主知道了确切的答案麻烦给说下   
回复 使用道具 举报
a 和d是肯定错,原因如楼上兄弟所讲。关于e的问题。
首先来说内部类他是一个类,和方法还是有一定区别的。
对于一个类里面有抽象方法,类必须是抽象的问题:抽象方法时没有主体的,也就是具体的执行过程被省略了,因此这个方法不能直接用,因此这个类功能不完善,因此类不能实例化,也就必须抽象。
而抽象的内部类却不同,因为抽象的内部类有执行主体(也就是大括号里面有类容),也就是那个抽象的方法。所以如果将这个抽象类等同一个函数看待的话他是有执行主体的,故外部类不需要声明为抽象。因此e的对错就解决了。
抽象函数:没有执行主体  
抽象内部类:有执行主体,也就是那个内部类的抽象方法
回复 使用道具 举报
海世山盟 发表于 2014-5-28 16:05
a 和d是肯定错,原因如楼上兄弟所讲。关于e的问题。
首先来说内部类他是一个类,和方法还是有一定区别的。
...

嗯,答案是c,e。原因大概就是你说的这个。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马