java匿名类和匿名对象及this的其他用法
/*
匿名内部类:就是内部类的简写格式。
必须前提:内部类必须继承或者实现一个类或者接口。
匿名内部类其实就是一个匿名 子类对象。
格式:new 父类对象 or 接口(){子类内容;(覆盖父类的, 而且可以增加自己的方法)
}//相当于将 继承父类 和 new 的过程 写到了一起有某有!很方便有某有!
*/
class Outer{int num;public Outer(){num = 5; }class Inner{int num;public Inner(){num = 10;}public void show(){//也就是调用该方法会有两个this指针入栈,why?很简单,因为内部类要访问外部类的数据啊!int num = 11;System.out.println("Inner part num " + num);//打印内部类中方法中的局部num变量System.out.println("Inner num " + this.num);//打印内部类中num成员变量//System.out.println("Inner num " + Inner.this.num);//打印内部类中num成员变量System.out.println("Outer num " + Outer.this.num);//打印外部类中num成员变量}}public void methods(){final int num = 55;//这个变量为什么一定要用final修饰呢?//因为如果不用final修饰,num就是一个局部变量,当这个函数结束之后就会消失!//而我们是在局部内部类的中访问这个num,这个类产生的对象是在堆上的,函数结束//对象也不会消失,那么这个对象在以后可能会多次访问这个num变量,这样就出错了!//如果是final, num 就是 55这一个值,不会变!class InnerTwo{void show(){System.out.println("part Inner final num = " + num);}}InnerTwo in = new InnerTwo();in.show();}public void way(){System.out.println("******************************************");//普通内部类:new Inner().show();//匿名对象new Inner(){ // 匿名内部类public void show(){System.out.println("内部类的匿名类!");}}.show();//静态内部类:new InnerOne().way();new InnerOne(){public void way(){System.out.println("静态内部类的匿名类!");}}.way();//外部类:new Outer().show();new Outer(){public void show(){System.out.println("外部类的匿名类!");}}.show();}static class InnerOne{public static int num = 100;public void way(){System.out.println("静态内部类中的方法!");}public static void show(){System.out.println("static InnerOne num " + num);} } public void show(){System.out.println("Outer num " + num);}
}public class PC{public static void main(String[] args){Outer out = new Outer();out.show();Outer.Inner in = out.new Inner();in.show(); // out.InnerOne.show();//类的所属是类, 类是加载到方法区的,当然对象实例中不存在类;Outer.InnerOne.show(); //匿名类和匿名对象的测试:out.way(); }
}
转载于:https://www.cnblogs.com/hujunzheng/p/3871928.html
java匿名类和匿名对象及this的其他用法相关推荐
- Java中匿名子类 的 匿名对象、匿名子类 的 非匿名对象、非匿名类 的 匿名对象、非匿名类 的 非匿名对象
/*** @Author: YuShiwen* @Date: 2020/11/18 2:06 PM* @Version: 1.0*/ public class AnonymousTest {publi ...
- .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法
开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...
- Java中的匿名类和匿名对象
匿名解释 匿名就是没有名字的对象,在创建对象时,只通过new的动作在堆内存开辟空间,却没有把堆内存空间的地址值赋值给栈内存的某个变量用以存储 匿名类/对象其实就是类/对象,对象具有的功能匿名类/对象都 ...
- java匿名类_Java匿名类
java匿名类 Java anonymous class are like local class or inner class without a name. We can use java ano ...
- java匿名类和匿名函数的概念和写法
前言: Lambda流式操作是Java8中重要的特性,lambda表达式核心概念为 函数式接口.::.-> 等基本语法,可以大大减少代码量的编写,使代码更加优雅 1.只有一个抽象函数的接口,就是 ...
- java 内部匿名类_java匿名类和匿名内部类详解
匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类.其语法形式如下:new() { //类的主体 }; 这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一 ...
- 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)
一. 匿名类 1. 传统的方式给类赋值,需要先建一个实体类→实例化→赋值,步骤很繁琐,在.Net 3.0时代,微软引入匿名类的概念,简化了代码编写,提高了开发效率. 匿名类的声明语法: var o ...
- java并发编程实践学习---java的类锁和对象锁
最近在看Java Concurrent in Practice(java并发编程实践),发现自己对java的线程.锁等机制,理解很肤浅,学习的也不够全面.打算借着这本书,全面的学习下JDK的并发包和一 ...
- 匿名内部类和匿名类_匿名schanonymous
匿名内部类和匿名类 Everybody loves a fad. You can pinpoint someone's generation better than carbon dating by ...
最新文章
- 多线程中局部静态变量初始化的陷阱
- java手动线程池使用_Java手动配置线程池过程详解
- sqlserver两个日期之间的年数_SQL语句计算两个日期之间有多少个工作日的方法
- Bootstrap自适应居中问题
- ubuntu下gedit查看txt中文乱码解决办法
- jQuery-ui-autocomplete
- 电信光猫DDNS的设置经历
- c语言写32位编译器,MinGW32 GCC编译器 V8.1 32位免费版
- 以下计算机网络新技术是什么,计算机网络新技术概述
- matlab二重积分计算程序,MATLAB在二重积分计算中的应用
- 飞机精确定位模型matlab,一种精确定位飞机位置的方法与流程
- pytorch 提取权重_获取Pytorch中间某一层权重或者特征
- Mac使用系列之软件安装权限
- 【懒人福利】自动记录操作步骤
- java tt-7s-d_JAVA TT-7S-D 超轻7速折叠自行车质量_参数_评价
- 人工智能学习路线图(超详细、超全面)
- 机器学习 api_开发人员会喜欢的10种机器学习API
- 服务器跑压力测试死机,我用鲁大师温度压力测试怎么死机了啊
- 阿里云ACP云计算对象存储OSS例题
- Matlab求解常微分方程组
热门文章
- canal本地运行异常:class com.alibaba.druid.pool.DruidDataSource cannot be cast to
- kibana 后台启动
- Flowable 数据库表结构 ACT_HI_ACTINST
- 基于Docker的Mysql主从复制搭建_mysql5.7.x
- Tomcat10 开机启动 Linux环境
- Linux操作系统需要做的准备
- VSCODE远程连接服务器,远程开发。
- java 读取jar包中的文件
- python3-datetime 时间处理
- 4________请拖拽到此区域5________请拖拽到此区域_5分钟学会:蒙版与通道(剪贴蒙版)...