/*
匿名内部类:就是内部类的简写格式。
必须前提:内部类必须继承或者实现一个类或者接口。
匿名内部类其实就是一个匿名 子类对象。
格式: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();
}
}

  

java匿名类和匿名对象及this的其他用法的更多相关文章

  1. .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

    开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...

  2. java工具类之按对象中某属性排序

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  3. 2.匿名类,匿名类对象,private/protected/public关键字、abstract抽象类,抽象方法、final关键字的使用,多线程Thread类start方法原理

    package com.bawei.multithread; //注意:模板方法我们通常使用抽象类或者抽象方法!这里我们为了方便在本类中使用就没有使用抽象类/抽象方法 public class Tem ...

  4. .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)

    1.自动属性 Auto-Implemented Properties 2.隐式类型 var  var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...

  5. java synchronized类锁,对象锁详解(转载)

    觉得还不错 留个记录,转载自http://zhh9106.iteye.com/blog/2151791 在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看 ...

  6. Java的类锁、对象锁和方法锁

    在Java中,对于synchronized关键字,大家看到的第一反应就是这个关键字是进行同步操作的,即得名"同步锁". 当用它来修饰方法和代码块时,默认当前的对象为锁的对象,即对象 ...

  7. java 匿名类和匿名方法

    package com.test; interface product{ int getPrice(); } public class News { /** * @param args */ publ ...

  8. Java工具类 通过ResultSet对象返回对应的实体List集合

    自从学了JDBC用多了像一下这种代码: List<xxx> list = new Array<xxx>(); if(rs.next()){ xxx x = new xxx(); ...

  9. java的类class 和对象object

    java 语言的源代码是以类为单位存放在文件中,已public修饰的类名须和存放这个类的源文件名一样.而 一个源文件中只能有一个public的类,类名的首字母通常为大写. 使用public修饰的类可以 ...

随机推荐

  1. 游戏Loading中的小提示和Loading动画实现

    学习unity1年多了,工作也1年了,因为工作需要,有几个月没接触unity Ngui啦. 学的还是不踏实.继续努力吧.由于下周就要进行新游戏的开发,这几天熟悉熟悉NGUI,今天按照现在公司以前的项目 ...

  2. [原] XAF How to Edit multiple objects in a ListViewAndDetailView

    2014年好久没有更新Blog了,工作调换了,很少用XAF,但还是很关注XAF的发展和学习,对中国的中小企业数据管理软件开发真的太实用了!! 功能比较简单,但很实用,直接上图和代码! ListView ...

  3. C#.net 中 修饰符 详解 (来自MSDN)

    自己理解的不够深刻,无奈基础较差!记上一笔,记忆深刻些,哈哈…… 1. 访问修饰符 public 同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员. private 只有同一 ...

  4. 丹佛机场行李系统Postmortem

    丹佛机场行李系统做Postmortem总结 事情起因是因为丹佛市场承诺进行机场建设,因此此项目问题不可回避,必须完成,合作的双方都是富有经验的公司但是最后依然变成了不可控的项目,经过小组讨论后我们认为 ...

  5. highcharts 当Y轴全部没有数据的时候 数据标签显示最下面 而不是居中显示

    yAxis: {min: 0,minRange: 1}

  6. iOS开发-UINavigationBar透明设置

    导航条最近需要设置成透明的形式,最开始想通过颜色clearColor设置,设置透明度,结果发现UINavigationItem无法显示显示,后来通过setBackgroundImage设置成功,不过会 ...

  7. 无线安全专题_攻击篇--MAC泛洪攻击

    上一篇讲解了无线安全专题_攻击篇--干扰通信,没在首页待多长时间就被拿下了,看来之后不能只是讲解攻击实战,还要进行技术原理和防御方法的讲解.本篇讲解的是局域网内的MAC泛洪攻击,这种攻击方式主要目的是 ...

  8. 很少再用left join

    作为开发,你是否经常碰到下面需要转换用户ID成用户名称的情况: 可惜你的这些业务表出于最少冗余设计要求,只有UserId,而没有UserName,这时你不得不破坏你一个类封装一个表的美好想法, 在你的 ...

  9. WPF,Silverlight与XAML读书笔记第四十五 - 外观效果之模板

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 模板允许用任何东西完全替换一个元素的可视树, ...

  10. 【C语言学习】《C Primer Plus》第6章 C控制语句:循环

    学习总结 1.循环的语法跟其他语言的没差多少,可能大多数语言都在C的基础上发展出来的,所以大同小异不奇怪. 2.在判断表达式里,C语言只有0被认为是假,所有非零值正整数都被认为真. #include ...