java内部类demo
内部类主要有三种:静态内部类,实例内部类,局部变量内部类
1.静态内部类,该类被static修饰,并且是成员变量,它只能访问外部类被static修饰的方法以及字段(这种说法只局限于不再内部类中创建外部类的对象)
public class Outer{
public String name;
/**静态内部类
* 只能访问外部类静态的字段
* 可以有静态和非静态的方法以及字段
* */
public static class StaticClass{
public void test(String name){
System.out.println("呵呵呵呵"+name);
}
public String aaaString="aaaa";
public static void show(){
System.out.println("show");
}
}
//得到其内部类对象的方法
public static void main(String[] args) {
//静态内部类
Outer.StaticClass staticClass = new Outer.StaticClass();
//静态内部类 静态方法调用
Outer.StaticClass.show();
}
}
2.实例内部类,没有被static修饰,是外部类的成员变量,该内部类不能有static的字段和方法,否则就要将其声明为static的,该内部类中可以直接访问外部类所有的字段和方法,因为内部类持有外部类.this对象。test方法中name指的是方法的变量,而Outer.this.name 指的外部类的name字段
public class Outer{
public String name;
/** 实例内部类声明在成员变量上
* 不能有静态方法或者字段
* */
public class InnerClass1{
public String a ="asdf";
public void test(String name){
//Outer.this.name 代表的是外部的类
Outer.this.name = name;
}
public void get(){
System.out.println(Outer.this.name);
}
//得到其内部类对象的方法
public static void main(String[] args) {
//实例内部类
Outer.InnerClass1 innerClass1 = new Outer().new InnerClass1();
}
}
}
3.局部变量内部类,有一点需要注意,该内部类访问局部变量时,该局部变量需要加上final 修饰,该内部类不能使用staic修饰,故该内部类不允许有静态的方法或者字段,该内部类,内部也持有外部类.this对象,可以访问外部类的所有方法和字段
public class Outer{
public String name;
public void test(String address){
/**内部类声明在局部变量上
* 类不能使用static修饰
* 字段不能被static修饰
* */
class InnerClass2{
private String name;
public int age;
public void test(String name){
Outer.this.name = name;
}
}
InnerClass2 innerClass2 = new InnerClass2();
}
}
java内部类demo的更多相关文章
- js闭包vs Java内部类
前言: 昨天写了一个关于Java内部的博客,在内部类的最后一点中谈到了Java闭包的概念,他是这样定义闭包的:闭包是一个可调用的对象,它记录了一些信息,这些信息来自创建它的作用域.结合Java的内部类 ...
- Java 内部类.md
Java 内部类 学习自 <Java编程思想> Overview 什么是内部类? Thinking In Java 中如此定义: 将一个类的定义放在里另一个类的定义的内部,这就是内部类. ...
- Java内部类使用注意事项
Java内部类使用注意事项: 1. 非静态内部类成员可以访问外部类实例成员 (如注释1),但外部类访问非静态内部类的成员 必须创建非静态内部类对象来访问其成员,如注释2 public class La ...
- 死磕Java内部类
Java内部类,相信大家都用过,但是多数同学可能对它了解的并不深入,只是靠记忆来完成日常工作,却不能融会贯通,遇到奇葩问题更是难以有思路去解决.这篇文章带大家一起死磕Java内部类的方方面面. 友情提 ...
- 简单谈一谈Java内部类的使用原因
使用内部类的原因 学习总得知其所以然,前面的一篇文章中我有提到过关于java内部类的几种用法以及一些示例,但是不明白内部类具体可以做什么,显然学习起来很渺茫,今天的文章简单说一说使用内部类的几个原因, ...
- Java内部类的整理。
Java 内部类 分四种:成员内部类.局部内部类.静态内部类和匿名内部类. 成员内部类: (1)即作为外部类的一个成员存在,与外部类的属性.方法并列. 注意:成员内部类中不能定义静态变量,但可以访问外 ...
- Java内部类final语义实现
本文描述在java内部类中,经常会引用外部类的变量信息.但是这些变量信息是如何传递给内部类的,在表面上并没有相应的线索.本文从字节码层描述在内部类中是如何实现这些语义的. 本地临时变量 基本类型 fi ...
- Java内部类详解
Java内部类详解 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就 ...
- 黑马----JAVA内部类
黑马程序员:Java培训.Android培训.iOS培训..Net培训 黑马程序员--JAVA内部类 一.内部类分为显式内部类和匿名内部类. 二.显式内部类 1.即显式声明的内部类,它有类名. 2.显 ...
随机推荐
- 第二次项目冲刺(Beta阶段)--第三天
一.站立式会议照片 二.项目燃尽图 三.项目进展 队员 ID 贡献比 王若凡 201421123022 20% 吕志哲 201421123021 16% 欧阳勇 201421123026 16% 卢 ...
- 201521123027 <iava程序设计>第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(2)
4. 处理冲突 4.1 向远程仓库push时无法提交成功,提示在push前应该先pull 如图所示: 有可能是因为远程仓库的版本与本地仓库的版本不一致,所以应先git pull将远程仓库的内容合并到本 ...
- 201521123103 《Java学习笔记》 第十一周学习总结
一.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 二.书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1. ...
- TCP/IP协议:OSI七层模型、TCP/IP四层模型的对比
1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...
- Python学习笔记008_类_对象_继承_组合_类相关的BIF
# 对象 = 属性 + 方法>>> # Python中的类名约定以大写字母开始>>> # tt = Turtle() 这就是创建类实例的方法,其它语言用new ,它 ...
- oc __weak和__strong的区别
1.先上代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 id __weak obj=[[NSObject alloc]init]; NSLog(@"弱引 ...
- SQLServer 自动循环归档分区数据脚本
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/表分区 概述 在很多业务场景下我们需要对一些记录量比较大的表进行分区,同时为了保证性能需要将一些旧的数据进行归档.在分区表很多的情 ...
- 自定义工作流活动报错:您无法登陆系统。原因可能是您的用户记录或您所属的业务部门在Microsoft Dynamics 365中已被禁用。
本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复265或者20170926可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...
- BZOJ-1012-[JSOI2008]最大数maxnumber(线段树)
Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插 ...