Java内部类小程序(成员内部类,静态内部类,匿名内部类)
/**
* 测试java内部类(成员内部类,静态内部类,匿名内部类)
* 局部内部类不常用,就不写了。
* @package :java05
* @author shaobn
* @Describe :
* @Time: 2015-9-6 下午8:32:38
*/
public class TestInner { /**
* @author shaobn
* @Describe :
* @param args
* @Time : 2015-9-6 下午8:32:09
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
testInner_1();
testInner_2();
testInner_3(); }
public static void testInner_1(){
//成员内部类生成内部类对象方式一
Outer_1.Inner_1 oi_1 = new Outer_1().new Inner_1();
System.out.println("成员内部类生成内部类对象方式一");
oi_1.testIn_1();
//成员内部类生成内部类对象方式二
Outer_1 o_1 = new Outer_1();
System.out.println("成员内部类生成内部类对象方式二");
o_1.getInner_1().testIn_1();
//成员内部类生成内部类对象方式三
Outer_1 o_11 = new Outer_1();
System.out.println("外部类访问内部类对象的成员");
o_11.visitInner_1();
}
public static void testInner_2(){
//测试静态内部类
Outer_2 o_2 = new Outer_2();
o_2.visitInner_2();
Outer_2.Inner_2.testIn_2();
}
public static void testInner_3(){
Outer_3 o_3 = new Outer_3();
System.out.println("访问匿名内部类方法方式一");
//访问匿名内部类方法方式一
o_3._testInner_3(50).show();
System.out.println("访问匿名内部类方法方式二");
//访问匿名内部类方法方式二
o_3.testInner_3(50); } }
//测试成员内部类
class Outer_1{
private int age = 10;
//测试成员内部类
public class Inner_1{
public int age = 100;
public void testIn_1(){
int age = 1000;
//访问外部类中成员变量
System.out.println(Outer_1.this.age);
//访问内部类中的成员变量
System.out.println(this.age);
//访问内部类中的局部变量
System.out.println(age);
}
}
//获取内部类对象(推荐)
public Inner_1 getInner_1(){
return new Inner_1();
}
//外部类访问内部类成员
public void visitInner_1(){
System.out.println(getInner_1().age);
getInner_1().testIn_1();
} }
//测试静态内部类
class Outer_2{
private int age = 20;
private static int length = 40;
public static class Inner_2{
private String name = "静态内部类";
private static float weight = 'A';
public static void testIn_2(){
//System.out.println(name);静态内部类中的静态方法必须要访问方法外部的静态成员变量,否则访问不允许。
System.out.println(Outer_2.length);
} }
public Inner_2 getInner_2(){
return new Outer_2.Inner_2();
}
public Class<?> _getInner_2(){
return Outer_2.Inner_2.class; }
public void visitInner_2(){
System.out.println(getInner_2().name);
System.out.println(Outer_2.Inner_2.weight);
} }
//内部类实现接口
interface SuperIner_3{
void show();
}
//测试匿名内部类
class Outer_3{
private int age = 30;
//方式一
public SuperIner_3 _testInner_3(final int height){
final int weight = 40;
SuperIner_3 si_3 = new SuperIner_3() { @Override
public void show() {
// TODO Auto-generated method stub
System.out.println(Outer_3.this.age);
System.out.println(weight);//匿名内部类只能访问final类型局部变量
System.out.println(height);
}
};
return si_3; }
//方式二
public void testInner_3(final int height){
final int weiht = 40;
new SuperIner_3() {
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println(Outer_3.this.age);
System.out.println(weiht);//匿名内部类只能访问final类型局部变量
System.out.println(height); }
}.show(); }
}
局部内部类不经常用就不写了,如有错误,望大家纠正。
Java内部类小程序(成员内部类,静态内部类,匿名内部类)的更多相关文章
- java的小程序在html中的运行测试
java的小程序在html中的运行测试,打开vs2012,以网站模式打开,生成,调用iis临时服务器运行.
- 福利贴——爬取美女图片的Java爬虫小程序代码
自己做的一个Java爬虫小程序 废话不多说.先上图. 目录命名是用标签缩写,假设大家看得不顺眼能够等完成下载后手动改一下,比方像有强迫症的我一样... 这是挂了一个晚上下载的总大小,只是还有非常多由于 ...
- Java 获取小程序openid(基于SpringBoot)
Java 获取小程序openid(基于SpringBoot) 官方文档 wx.login 1.引入Request封装依赖 <!--Request依赖--> <dependency&g ...
- Java 编写小程序,下载指定网页上的所有图片
使用Java编写一个小程序,可以根据指定的网页地址,下载网页中的所有图片:使用到网络编程.线程池.IO和UUID的技术.具体代码如下: import java.io.File; import java ...
- java独立小程序实现AES加密和解密
一.需求: web项目中配置文件配置的密码是明文的, 现在需要修改成密文, 加密方式采用AES, 于是写了个工具类用于加密和解密. 又因为这个密码是由客户来最终确定, 所以为了部署时方便起见, 写了个 ...
- java微信小程序调用支付接口(转)
简介:微信小程序支付这里的坑还是有的,所以提醒各位在编写的一定要注意!!! 1.首先呢,你需要准备openid,appid,还有申请微信支付后要设置一个32位的密钥,需要先生成一个sign,得到pre ...
- java微信小程序解密AES/CBC/PKCS7Padding
摘要:微信小程序解密建议使用1.6及以上的环境使用maven下载jar包org.bouncycastlebcprov-jdk15on1.55加密类代码importorg.bouncycastle.jc ...
- Java网页小程序——Java Applet
Java Applet是编译过的Java程序,可以在所有支持Java的浏览器中运行. 1.Applet的使用 import java.applet.Applet; import java.awt.Gr ...
- Java截图小程序源码
Java编写的全屏截图小程序 package cnom.test.testUtils; import java.awt.AWTException; import java.awt.Dimension; ...
随机推荐
- js模拟类的公有与私有 方法与变量
var myConstructor = function(message){ //实例变量 this.message = message; //私有变量,外部不可见.用var声明的变量具有块作用域 v ...
- SQL backup&restore
--完整备份Backup Database NorthwindCSTo disk='G:\Backup\NorthwindCS_Full_20070908.bak' --差异备份Backup Data ...
- 转NodeJS的npm模块版本号 模式解析
npm 中的模块版本都需要遵循 semver 2.0 的语义化版本规则. 版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的API 修改, 次版本号:当你做了向下兼 ...
- ArcGIS API for Silverlight 加载google地图
原文:ArcGIS API for Silverlight 加载google地图 using System; using System.Net; using System.Windows; using ...
- LightOj 1138 - Trailing Zeroes (III) 阶乘末尾0的个数 & 二分
题目链接:http://lightoj.com/volume_showproblem.php?problem=1138 题意:给你一个数n,然后找个一个最小的数x,使得x!的末尾有n个0:如果没有输出 ...
- JSONModel 遇见关键字为id或者description
像id.description这样的,都是系统自带的,要解析它,得特殊处理一下.我用的是JSONModel { "contentList": [ { "id": ...
- tcp 服务端如何判断客户端断开连接
一篇文章: 最近在做一个服务器端程序,C/S结构.功能方面比较简单就是client端与server端建立连接,然后发送消息给server.我在server端会使用专门的线程处理一条socket连接 ...
- Ubuntu下virtualbox nat网络模式下 实现宿主机访问虚拟机
参考原文(在windows环境下):http://hi.baidu.com/george_gly/item/5183b76e5a79e49ac5d2498b nat网络模式下,虚拟机可以访问外网.访问 ...
- C语言中malloc()和calloc()c函数用法
C语言中malloc()和calloc()c函数用法 函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别. malloc()函数有一个参数,即要分配的内存空间的大小: ...
- [BS] 小知识点总结-04
1. ios新知识学习思路: 在开发过程中如果遇到某种新需求以前从未做过,例如改变textField的Placeholder颜色,有如下思路和途径: 1.1 在Storyboard/Xib辅助编辑器A ...