匿名内部类 可以访问外部类_Java 内部类与外部类的互访使用小结
内部类又称为嵌套类,可以把内部类理解为外部类的一个普通成员。
内部类访问外部类
里面的可以自由访问外面的,规则和static一样。(访问非静态时必须先创建对象)
具体如下:
非静态内部类的非静态方法
直接访问
public class Outter {
int i = 5;
static String string = "Hello";
class Inner1{
void Test1 (){
System.out.println(i);
System.out.println(string);
}
}
}
静态内部类的非静态方法
因为静态方法访问非静态外部成员需先创建实例,所以访问i时必须先new外部类。
public class Outter {
int i = 5;
static String string = "Hello";
static class Inner2{
void Test1 (){
System.out.println(new Outter().i);
System.out.println(string);
}
}
}
静态内部类的静态方法
规则如上
public class Outter {
int i = 5;
static String string = "Hello";
static class Inner2{
static void Test2 (){
System.out.println(new Outter().i);
System.out.println(string);
}
}
}
外部类访问内部类
大方向:因为将内部类理解为外部类的一个普通成员,所以外面的访问里面的需先new一个对象。
非静态方法访问非静态内部类的成员:
new 内部类对象
public class Outter {
void Test1(){
System.out.println(new Inner1().i);
}
class Inner1{
int i = 5;
// static String string = "Hello"; 定义错误!
}
}
静态方法访问非静态内部类的成员
静态方法Test2访问非静态Inner1需先new外部类;
继续访问非静态成员i需先new 内部类
所以访问规则为:new Outter().new Inner1().i。
public class Outter {
static void Test2(){
System.out.println(new Outter().new Inner1().i);
}
class Inner1{
int i = 5;
// static String string = "Hello"; 定义错误!
}
}
非静态方法访问静态内部类的成员
先“外部类.内部类”访问至内部类。
若访问静态成员,则需先new再访问;若访问非静态成员,则可直接访问。
public class Outter {
void Test1(){
Outter.Inner2 inner2 = new Outter.Inner2();
System.out.println(inner2.i);
System.out.println(inner2.string);
System.out.println(Outter.Inner2.string);
}
static class Inner2{
int i = 5;
static String string = "Hello";
}
}
非静态方法访问非静态内部类的成员
先“外部类.内部类”访问至内部类,再new即可访问静态成员。
public class Outter {
void Test1(){
Outter.Inner1 inner2 = new Outter.Inner1();
System.out.println(inner2.i);
}
class Inner1{
int i = 5;
// static String string = "Hello"; 定义错误!
}
}
匿名内部类
匿名内部类访问外部成员变量时,成员变量前应加final关键字。
final int k = 6;
((Button)findViewById(R.id.button2)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println(k);
}
});
匿名内部类 可以访问外部类_Java 内部类与外部类的互访使用小结相关推荐
- java内部类外部类_Java内部类:如何在内部类中返回外部类对象
Nasted Class 的介绍,请详见参考 今天讨论的不是不是内部类的概念,而是具体使用的一个场景-如何在内部类中返回外部对象 (孤猪:我在程序里也碰到过一次这样的状况,非静态内部类可以直接调用外部 ...
- java的内部类和外部类_java内部类 和外部类的区别
下面说一说内部类(Inner Class)和静态内部类(Static Nested Class)的区别: 定义在一个类内部的类叫内部类,包含内部类的类称为外部类.内部类可以声明public.prote ...
- 匿名内部类 可以访问外部类_Java——内部类详解
说起内部类,大家肯定感觉熟悉又陌生,因为一定在很多框架源码中有看到别人使用过,但又感觉自己使用的比较少,今天我就带你具体来看看内部类. 内部类基础 所谓内部类就是在类的内部继续定义其他内部结构类. 在 ...
- java中局部内部类_Java内部类详解--成员内部类,局部内部类,匿名内部类,静态内部类...
一.内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一 ...
- Java hibernate假外键_java – Hibernate:外键的列数错误
我已经定义了我的两个实体类User和Permission之间的多对多关系.用户具有username和countyId的主键组合,我的Permission表具有常规整数Id.表UserPermissio ...
- Java hibernate假外键_JAVA基础:Hibernate外键关联与HQL语法
例如对于TUser类 1.实体查询 String hql = " from TUser"; 执行这条语句会返回TUser以及TUser子类的纪录. 注: 如果 TUser 类具有外 ...
- java内部类与外部类
java内部类与外部类 java内部类与外部类 一.内部类的作用 二.内部类分类 一.成员内部类 1.非静态内部类 2.静态内部类 二.局部内部类 三.匿名内部类(重要) java内部类与外部类 概念 ...
- java内部类选择题_java内部类使用总结
1.什么是内部类? 定义在类内部的类,称之为内部类 public class Out{ class In{ //此时In就是内部类 } } 2.为什么要使用内部类? 1),增强封装,把内部类隐藏在外部 ...
- java 内部类怎么调用成员变量_JAVA内部类之成员内部类
JAVA有一个特殊的类形式--内部类(这个词有点为难普通话不好的南方朋友).今天我们就来聊聊内部类的一种:成员内部类. 如何定义成员内部类 那要如何定义成员内部类呢. 既然叫成员内部类,说明和成员变量 ...
最新文章
- js url传值中文乱码完美解决(JAVA)
- web请求报出 “超过了最大请求长度” 【注意:重启IIS】
- linux系统层次(转)
- MySQL 5.7.22 二进制安装
- 《高性能JavaScript》第三章 DOM编程
- Boost:测试bind <void>
- SQL 查询总是先执行SELECT语句吗?
- OAuth 2.0 扩展协议之 PKCE
- 解决: Intellij IDEA 运行报错 Command line is too long
- android xml黑体字_为 Android 换上任意喜欢的字体,你可以试试这个 Magisk 模块
- html背景图平移显示一次,js实现单张图片平移切换效果
- 中值滤波_图像处理之低通滤波
- 作战军事环境仿真系统软件解决方案
- 用python写个类似浏览器的下载器,超简单的
- java浪曦学习日志 异常类
- 小米air耳机重新配对_小米air耳机重新配对_「小三爷出品」不错的新年礼物,小米蓝牙耳机Air体验...
- 用js处理图片加载错误时加载默认图片的方法
- doors如何导入HTML文档,DOORS使用手册.doc
- (翻译)缩略图(Thumbnail)
- [坑] FileZilla下载按钮为灰色
热门文章
- 【clickhouse】clickchouse的分区合并速度小于插入速度会怎么样
- 【MySQL】MySQL 一些 使用 案例
- 【正则表达式】正则表达式
- JVM : VisualVM 排查内存泄漏的问题
- Mac :谷歌浏览器 NET::ERR_CERT_INVALID 此证书已被撤消。网络错误和攻击行为通常是暂时的,因此,此网页稍后可能会恢复正常
- 【Linux】linux grep过滤中,不包含某些字符串
- 【Flink】Flink 使用 ParameterTool 进行传参
- 10-300-020-简介-架构-简介
- python爬虫避免重复数据_No.2﹣Python﹣scan﹣anti-crawler(随机请求头和IP代理)取消链接和重复数据消除,NO2pythonscrapy,反,爬虫,去...
- 查看被docker-proxy占用的端口