obj3.func();

//3.2 访问静态内部类的静态方法(通过类名访问)

Outer.StaInner.staFunc();

//4 局部内部类访问局部变量

Outer obj4 = new Outer();

obj4.local();

//5 匿名内部类

Outer obj5 = new Outer();

obj5.anonymous();

//6 匿名内部类作为参数

asPara(new AbstractClass() {

public void func() {

System.out.println(匿名内部类作为参数);

}

});

}

public static void asPara(AbstractClass ac) {

ac.func();

}

}

//抽象类:作为匿名内部类存在的前提(前提:存在一个类(具体类或者抽象类)或者接口)

abstract class AbstractClass{

public abstract void func();

}

//外部类

class Outer{

private String hello = 内部类可以访问外部类数据成员(包括私有成员);

//内部类------------------------------

class Inner{

public void func() {

//内部类获取了外部类的引用Outer.this

System.out.println(Outer.this.hello);

System.out.println(hello);

}

}

//内部类私有---------------------------

private class PriInner{

public void func() {

System.out.println(内部类私有,外部类提供public方法访问);

}

}

//外部类提供public方法访问

public void providePublicFunc() {

PriInner pi = new PriInner();

pi.func();

}

//静态内部类--------------------------

static class StaInner{

//非静态方法

public void func() {

System.out.println(静态内部类的非静态方法);

}

//静态方法

public static void staFunc() {

System.out.println(静态内部类的静态方法);

}

}

//局部内部类---------------------------

//外部类中的成员方法local()

public void local() {

final String str = 局部内部类访问局部变量;

class LocInner{

public void func() {

//访问的局部变量要用final修饰,但jdk1.8不用

System.out.println(str);

}

}

//局部内部类只能在方法中访问

LocInner li = new LocInner();

li.func();

}

/*匿名内部类(是一个内部类) 前提:存在一个类(具体类或者抽象类)或者接口

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

* */

//外部类中的成员方法anonymous()

public void anonymous(){

new AbstractClass() {

public void func() {

System.out.println(重写抽象类中func()抽象方法);

}

}.func();

/*

相当于一个继承了AbstractClass的子类的一个对象obj,然后,obj.func();

思考1:若AbstractClass中还有一个抽象方法func1(),怎么调用?

方法:

AbstractClass ac = new AbstractClass() {

public void func() {

System.out.println(重写抽象类中func()抽象方法);

}

public void func1(){

System.out.println(重写抽象类中func1()抽象方法);

}

}

ac.func();

ac.func();

思考2:若匿名内部类中有自己定义的方法myFunc(),how?

思路:向下强转?but子类的类名是什么?

所以,匿名内部类针对一个方法比较好

* */

}

}

运行结果:

Java内部类手机专卖店_JAVA——内部类的那些事儿相关推荐

  1. Java内部类手机专卖店_Java(20)内部类

    内部类 一个定义在另一个类里面的类称为内部类.内部类可以分为四种形式:成员内部类, 成员内部类 内部调用外部的属性和方法 成员内部类可以无条件访问外部类的所有成员属性和方法. 其他类(例子中的RunC ...

  2. Java内部类手机专卖店_Java:内部类

    看Thinking in Java中内部类的一章,有内部类和静态内部类,书中把后者叫做嵌套类.常见用法实例: 一般内部类(非静态) 1 public classInnerClassTest {2 pu ...

  3. java内部类的作用_java 内部类的好处和缺点(上)

    一.什么是内部类 内部类是指在一个外部类的内部再定义一个类,类名不需要和文件夹相同.内部类可以声明 public .protected .private 等访问限制,可以声明为 abstract的供其 ...

  4. java游戏有牧师_JAVA内部类是怎么玩儿的

    内部类一共分为:成员内部类,局部内部类,静态嵌套类,匿名内部类. 1. 成员内部类 最普通的内部类 class Outter { private int age = 12; class Inner { ...

  5. java内部类外部类_Java内部类:如何在内部类中返回外部类对象

    Nasted Class 的介绍,请详见参考 今天讨论的不是不是内部类的概念,而是具体使用的一个场景-如何在内部类中返回外部对象 (孤猪:我在程序里也碰到过一次这样的状况,非静态内部类可以直接调用外部 ...

  6. java内部类实现方式_Java内部类详解

    一 内部类是什么 Java类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类.根据定义的方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类四种. Java为什 ...

  7. java中局部内部类_Java内部类详解--成员内部类,局部内部类,匿名内部类,静态内部类...

    一.内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一 ...

  8. java 内部类 加载_Java 内部类基础介绍

    看Concurrent包源码时,其中存在大量的内部类使用,所以特地抽出一篇来介绍内部类.内部类其实是Java 经常用到的一个小的知识点. 内部类: 在一个类内部定义的类叫做内部类,根据内部类在外部类中 ...

  9. java 内部类 加载_java内部类及类加载顺序

    package demo; import demo.Enclosingone; import demo.Enclosingone.InsideOne; import demo.Enclosingone ...

最新文章

  1. 京东员工怒怼公司:每天工作到很晚甚至凌晨,你跟我说这是幸福?
  2. 微信公众平台开发中-SAE不支持XStream框架的解决方案
  3. 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?
  4. 还不知道要看什么小说嘛?爬取小说网站前10页的小说数据分析一波
  5. 简历的正确发音和习惯用法
  6. Java中利用MessageFormat对象实现类似C# string.Format方法格式化
  7. zabbix 配置mysql_zabbix 配置mysql监控
  8. 字更大、页面更简单 淘宝长辈模式正式上线
  9. 激光slam_激光SLAM与视觉SLAM的特点
  10. 域domain user用户对本地NTFS磁盘的写入权限问题
  11. C++输出九九乘法表
  12. 4月第三周网络安全报告:发现放马站点域名437个
  13. docker镜像下载太慢
  14. python导入win32com.client出错
  15. java坦克大战练习。java基础项目。巩固java基础部分。
  16. 谈谈编程器软件开发与设计
  17. App个人信息保护管理暂行规定即将出台
  18. 一个简单光栅器的实现(五) 光栅化阶段
  19. Python3.6+jieba+wordcloud 爬取豆瓣影评生成词云
  20. 解决黑苹果和Windows双系统时,时钟不同步的问题

热门文章

  1. js中修改this的指向方法整理
  2. 聊聊jesque的几个dao
  3. [hive] hive 内部表和外部表
  4. C# 实现HTML转换成图片的方法
  5. Android之NDK开发的简单实例
  6. 使用postMan测试erp系统登录接口
  7. ArrayList与LinkedList区别
  8. 各种 Optimizer 梯度下降优化算法回顾和总结
  9. 新装Ubuntu18.04系统配置PX4环境
  10. [Machine Learning with Python] Data Visualization by Matplotlib Library