一、内部类

  1、内部类概述:把类定义在其他类内部,这个类被称为内部类(内部类可以使用static修饰,外部类不可)

  2、内部类访问特点:内部类可以直接访问外部类成员,包括私有的

               外部类要访问内部类的成员,必须创建对象

  3、内部类位置:

      成员位置:在成员位置定义的类,被称为成员内部类

      局部位置:在局部位置定义的类,被称为局部内部类

  4、成员位置内部类案例

    内部类和外部类没有继承关系

    通过外部类限定this对象

  5、局部位置内部类

    可以直接访问外部类成员

    在局部位置可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能

    局部内部类访问局部变量必须用final修饰,原因:局部变量是随着方法的调用而调用,随着方法使用完毕而消失,而堆内存的内容不会立即消失(要等垃圾回收器空闲时才回收垃圾变量)。局部变量加final修饰后变为常量,经反编译可看到,局部内部类访问的变量直接是常量而非变量

 

  6、匿名内部类(内部类的简化写法)

    前提:存在一个类或者接口(这里的类可以是具体类也可以是抽象类)

    格式: new  类名或者接口名(){

          重写方法;

        }

    本质:是一个继承了该类或实现了该接口的子类匿名对象

    案例:

 interface Inter {
public abstract void show();
public abstract void show2();
}
class Outer {
public void method() {
Inter i = new Inter() { //多态
public void show() {
System.out.println("show");
} public void show2() {
System.out.println("show2");
}
}; i.show();
i.show2();
}
}
class InnerClassDemo6 {
public static void main(String[] args) {
Outer o = new Outer();
o.method();
}
}

7、

匿名内部类面试题:
按照要求,补齐代码
interface Inter { void show(); }
class Outer { //补齐代码 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制台输出”HelloWorld”

 interface Inter {
void show(); //public abstract void show();
}
class Outer {
//补齐代码
public static Inter method() {
//子类对象 -- 子类匿名对象
return new Inter() {
public void show() {
System.out.println("HelloWorld");
}
};
}
}
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
/*
1:Outer.method()可以看出method()应该是Outer中的一个静态方法。
2:Outer.method().show()可以看出method()方法的返回值是一个对象。
又由于接口Inter中有一个show()方法,所以我认为method()方法的返回值类型是一个接口。
*/
}
}

匿名内部类面试题

最新文章

  1. photoshop, 钢笔上色
  2. java获取客服端信息(系统,浏览器等)
  3. 浅析 - iOS应用程序的生命周期
  4. HTML(Open Method)翻译自MSDN
  5. 第 5 章 工厂方法模式【Factory Method Pattern】
  6. TransactionScrope 2
  7. error C2248: “CObject::operator =”: 不可访问 private 员(于“CObject”类声明)
  8. [2017/5/28]FJ四校联考
  9. 使用SCP命令在多个linux系统间进行copy拷贝,上传,下载...
  10. luogu P5288 [HNOI2019]多边形
  11. vuex状态管理
  12. MVC 获取控制器名称和Action名称(转载)
  13. Flask web开发之路三
  14. redis开机自动服务脚本
  15. Flash:彻底理解crossdomain.xml、跨swf调用。
  16. java连接数据库时的报错
  17. innotop监控mysql
  18. POI 导出excel带小数点的数字格式显示不对解决方法
  19. ks8基础(1) etcd安装
  20. HIVE sql取中文

热门文章

  1. 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)
  2. 如何免费访问Google?
  3. shell小结
  4. vbs test
  5. Chrome 消息传递机制
  6. Java系列: JAVA字符串格式化-String.format()的使用(zz)
  7. 对于JVM内存配置参数
  8. 20135223/20135234/20135229小组——亚博 Arduino智能小车实践报告
  9. 慢牛APP相关截图
  10. JS构造函数的用法和JS原型