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();
}
}
java匿名类和匿名对象及this的其他用法的更多相关文章
- .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法
开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- 2.匿名类,匿名类对象,private/protected/public关键字、abstract抽象类,抽象方法、final关键字的使用,多线程Thread类start方法原理
package com.bawei.multithread; //注意:模板方法我们通常使用抽象类或者抽象方法!这里我们为了方便在本类中使用就没有使用抽象类/抽象方法 public class Tem ...
- .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)
1.自动属性 Auto-Implemented Properties 2.隐式类型 var var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...
- java synchronized类锁,对象锁详解(转载)
觉得还不错 留个记录,转载自http://zhh9106.iteye.com/blog/2151791 在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看 ...
- Java的类锁、对象锁和方法锁
在Java中,对于synchronized关键字,大家看到的第一反应就是这个关键字是进行同步操作的,即得名"同步锁". 当用它来修饰方法和代码块时,默认当前的对象为锁的对象,即对象 ...
- java 匿名类和匿名方法
package com.test; interface product{ int getPrice(); } public class News { /** * @param args */ publ ...
- Java工具类 通过ResultSet对象返回对应的实体List集合
自从学了JDBC用多了像一下这种代码: List<xxx> list = new Array<xxx>(); if(rs.next()){ xxx x = new xxx(); ...
- java的类class 和对象object
java 语言的源代码是以类为单位存放在文件中,已public修饰的类名须和存放这个类的源文件名一样.而 一个源文件中只能有一个public的类,类名的首字母通常为大写. 使用public修饰的类可以 ...
随机推荐
- Mac os x下配置nginx + php
一直都没使用过PHP的,最近leader推荐使用他在维护的一个移动端的js框架,在本地合并压缩使用的是php环境处理的,so,只能是搭一个PHP的环境了.一直使用的本地代理服务器都是nginx,虽然P ...
- c#读取webconfig
string Conn_str = ConfigurationManager.AppSettings["connectionString"].ToString();
- 网页版视频网站可以用html5来实现吗?
当然可以用html5来实现视频网站,而且html5的诞生完全符合了百度优化,百度蜘蛛对这类的网站友好度非常高,会尽量会给高的权重,但是现在很多做 这类网站的开发还是比较习惯用websocket,这个东 ...
- Security Configuration and Auditing Scripts for Oracle E-Business Suite (文档 ID 2069190.1)
This document provides the security configuration and auditing scripts for Oracle E-Business Suite. ...
- MySQL 升级详细步骤 (包括 Percona)
MySQL 升级步骤 MySQL 5.1.72 升级到 MySQL 5.5.36 鉴于我在升级的时候遇到的麻烦问题,我觉得有必要把一些细节说清楚,免得引起误解了.感觉官方文档上的升级步骤写的比较简单, ...
- CSS 禁止浏览器滚动条的方法(转)
1.完全隐藏 在<boby>里加入scroll="no",可隐藏滚动条: <boby scroll="no"> 这个我用的时候完全没效果 ...
- 记录HttpWebRequest辅助类
最近因为工作关系,需要通过HttpWebRequest去请求API,所有就写了个简单的辅助public sealed class HttpRequestHelper { private static ...
- 使用Roboguice依赖注入规划Android项目
前言 好久没写博客了,罪过啊-记事本里累积了不少东西,整理整理放上来. 关于依赖注入 Dependency Injection( 依赖注入)可以很好的帮助我们分离模块,降低耦合.提高可测试性.(PS: ...
- 深入理解openstack网络架构(3)-----路由
原文地址: https://blogs.oracle.com/ronen/entry/diving_into_openstack_network_architecture2 译文转自:http://b ...
- Metrics-Java版的指标度量工具之二
接上<Metrics-Java版的指标度量工具之一> 4. Histograms Histograms主要使用来统计数据的分布情况,最大值.最小值.平均值.中位数,百分比(75 ...