TypechoJoeTheme

MelodyJerry

统计
登录
用户名
密码
/
注册
用户名
邮箱

一题引出“Java的内部类”

2021-04-14
/
0 评论
/
174 阅读
/
正在检测是否收录...
04/14

题目描述

在下面插入哪段代码可以获得一个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();
class Line {
    public class Point { public int x,y;}
    public Point getPoint() { return new Point(); }
}
class Triangle {
    public Triangle() {
    // insert code here
    }
}

分析

  1. 把类定义在另一个类的内部,该类就被称为内部类
  2. 内部类的访问规则
  • 可以直接访问外部类的成员,包括私有
  • 外部类要想访问内部类成员,必须创建对象
  1. 内部类的分类
  • 成员内部类
  • 局部内部类
  • 匿名内部类
  1. 成员内部类访问规则
  • 成员内部类非静态的:
外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
  • 成员内部类静态的:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
  1. 局部内部类
  • 局部内部类访问局部变量必须final修饰。

为什么呢?
因为局部变量使用完毕就消失,而堆内存的数据不会立即消失
所以,堆内存还是用该变量,而改变量已经没有了
为了让该值还存在,就加final修饰。
通过反编译工具我们看到了,加入final后,堆内存直接存储的是,而不是变量名

  1. 匿名内部类(掌握)
  • 是局部内部类的简化形式
  • 前提:

    • 存在一个类或者接口
  • 格式:
new 类名或者接口名() {
重写方法;
}
  • 本质:
    其实是继承该类或者实现接口的子类匿名对象

答案

D
Java
朗读
赞 · 0
赞赏
感谢您的支持,我会继续努力哒!

三合一收款

下面三种方式都支持哦

微信
QQ
支付宝
打开支付宝/微信/QQ扫一扫,即可进行扫码打赏哦
版权属于:

MelodyJerry

本文链接:

http://melodyjerry.top/index.php/archives/418/(转载时请注明本文出处及文章链接)

评论 (0)
IP信息

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

今日天气

V2EX热门榜

  • 获取失败!

标签云