一、内部类的访问
class Line {
public class Point { public int x,y; }
public Point getPoint(){ return new Point(); }
}
class Triangle{
public Triangle(){
//insert code here
}
}
若想获得一个Point对象的坐标,应该插入的代码片段为:
A. Point p = Line.getPoint();
B.Line.Point p = Line.getPoint();
C.Point p = ( new Line() ).getPoint();
D.Line.Point p = ( new Line() ).getPoint();
正确答案应该是:D
本题涉及到了内部类的知识点,下面对内部类的访问进行一个积累:
(1) 把类B定义在类A中,类B就被成为内部类;
(2) 内部类的访问规则
a.可以直接访问外部类的成员,包括私有;
b.外部类要想访问内部类成员,必须创建对象;
(3) 内部类的分类
a.成员内部类;
b.局部内部类;
c. 匿名内部类;
(4) 成员内部类访问规则
a.成员内部类非静态:
外部类名.内部类名 对象名 = new 外部类名().new 内部类名;
b.成员内部类是静态的:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
(5) 局部内部类
局部内部类访问局部变量时必须加final修饰。因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。所以堆内存还是用该变量,而改变量已经没有了。为了让值还存在,就加以final修饰。
5386

被折叠的 条评论
为什么被折叠?



