内部类

在类定义也有类,在该类上的内部被称为一个内部类。

访问功能:

1,内部类可以直接访问外部类成员,它包含私有成员

2,外部类需要访问内部类的成员将需要建立一流的内部对象。

一般用于类的设计。

分析事物时,发现该事物描写叙述中还有事物,并且这个事物还在訪问被描写叙述事物的内容。

这时就把还有的食物定义成内部类来描写叙述。

直接訪问外部类中的内部类中的成员

class Outer
{
class Inner
{
}
}
class Innerclassdemo
{
public static void main(String [] args)
{
Outer.Inner in =new Outer().new Inner();
}
}

假设一个内部类是静态的。相当于一个外部类,样例例如以下

class Outer
{
static class Inner
{
}
}
class Innerclassdemo
{
public static void main(String [] args)
{
Outer.Inner in =new Outer.Inner();
}
}

注意:假设内部类中定义了静态成员。该内部类也必须是静态的。

内部类訪问外部类的样例

class Outer
{
int num =3;
class Inner
{
int num =4;
void show()
{
int num =5;
System.out.println(num);//5
System.out.println(this.num);//4
System.out.println(Inner.this.num);//4
System.out.println(Outer.this.num);//3
}
}
}
class InnerClass
{
public static void main(String [] args)
{
Outer.Inner in =new Outer().new Inner();
in.show();
}
}

为什么内部类能直接訪问外部类中的成员?

由于内部类持有了外部类的引用。

外部类名.this

局部内部类

在局部内部类中,要訪问外部类的局部变量时,该局部变量须要被final修饰。比較简单就不粘代码了。

匿名内部类

前提:

内部类必须继承一个外部类或实现一个接口。

匿名内部类:就是一个匿名子类对象。

格式:new 父类 or 接口(){子类内容}

通常使用的场景:

当函数參数是接口类型时,并且接口中的方法不超过三个。能够使用匿名内部类作为实际參数进行传递。

abstract class Inter {
abstract void show1();
abstract void show2();
}
class InnerClass
{
public static void main(String []args){
show(new Inter (){
public void show1(){
System.out.println("show1");
}
public void show2(){
System.out.println("show2");
}
});
}
public static void show (Inter in){
in.show1();
in.show2();
}
}

版权声明:本文博主原创文章。博客,未经同意不得转载。

java语言内部类和匿名内部类的更多相关文章

  1. 十一、Java基础---------内部类与匿名内部类

    内部类分为普通内部类(有名)和匿名内部类.普通内部类分为成员内部类.局部内部类.静态内部类(嵌套内部类).顾名思义,内部类就是定义在一个类内部的类.什么时候都会使用内部类呢?当我们定义一个类,发现内部 ...

  2. java的内部类及匿名内部类

    在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类 内部类和外层封装它的类之间存在逻辑上的所属关系 Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称 ...

  3. Java编程之委托代理回调、内部类以及匿名内部类回调(闭包回调)

    最近一直在看Java的相关东西,因为我们在iOS开发是,无论是Objective-C还是Swift中,经常会用到委托代理回调,以及Block回调或者说是闭包回调.接下来我们就来看看Java语言中是如何 ...

  4. “全栈2019”Java第一百一十章:局部内部类与匿名内部类区别详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. Java之有名内部类和匿名内部类

    Java内部类 定义在外部类中的类就是内部类:内部类的定义是为了更清楚.详细地描述事物. 有名内部类和匿名内部类 Java语言根据内部类是否有类名将内部类分为有名内部类和匿名内部类(没有类名). 有名 ...

  6. Java语言简介、基础组成、封装、继承、多态、抽象类、内部类、接口

    目录 Java简介 Java语言基础组成 面向对象 对象 封装 构造函数 this关键字 static(静态关键字) 主函数 静态什么时候用呢? 面向对象(数组工具对象建立) 设计模式 继承 成员变量 ...

  7. Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)

    Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液 ...

  8. java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类

    提起java内裤类(innerClass)很多人不太熟悉,实际上类似的概念在c++里面也有,那就是嵌套类(Nested Class),关于这俩者的区别,在下文中会有对比.内部类从表面上看,就是在类中定 ...

  9. java 内部类、匿名内部类

    一:内部类 1:什么是内部类? 大部分时候,类被定义成一个独立的程序单元.在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类(有些地方也叫做嵌套类),包含内部类的 ...

随机推荐

  1. Windows 8实例教程系列 - 开篇

    原文:Windows 8实例教程系列 - 开篇 2012年10月26日,微软发布Windows 8操作系统以及自主品牌平板电脑Surface,Windows作为世界上最流行的操作系统,发布一周内,下载 ...

  2. DOM手术台

    CSS分类 排队: <div id="box" style="width:200px;border:1px solid red color:red;font-siz ...

  3. 怎么将Emeditor设置成网页查看源代码的默认编译器

    1.打开emditor: 2.在菜单栏中找到工具---->自定义,打开自定义窗口: 3.快捷方式--->更多快捷方式 5.选中“在internet explorer中通过emeditor查 ...

  4. 【Swift】学习笔记(四)——设置(Collection)

    Swift和其他语言也提供了两种类型的集合:数组和字典 数组:数组用来按顺序存储同样类型的数据,swift规定它是类型安全的,每个数组都有自己的类型也就是其它语言所说的泛型. 创建数组: 1.var ...

  5. FastReport的再次使用

    FastReport.Net是一款功能齐全的报表分析解决方案. 前两年工作的时候就是使用FastReport进行报表设计,只是当时使用的时候都是调用别人写好的帮助类,直接调用即可.当时让人觉得不明觉厉 ...

  6. yarn环境跑mapreduce报错某个container 600s未报告进度超时被杀

    问题: 发现每次reduce阶段跑到98%,相关的container被杀.报出的log大概的意思:container 600s未报告进度超时被杀 解决的方法: 在mapreduce程序里加上 conf ...

  7. OpenCVR 有新成员 OpenCVV OpenCVC

    OpenCVC主要负责OpenCVR报名, OpenCVV支持Android IOS Mac Windows 的client 版权声明:本文博客原创文章,博客,未经同意,不得转载.

  8. SQL 2008 SP2 找不到SQL Server Engine

    原文:SQL 2008 SP2 找不到SQL Server Engine 最近我有个客户碰到一个很奇怪的问题.他安装SQL server 2008 SP2的时候, SP2的安装程序无法找到SQL se ...

  9. Linux内核进程管理

    介绍: 在Linux的内核的五大组成模块中,进程管理模块时很重要的一部分.它尽管不像内存管理.虚拟文件系统等模块那样复杂.也不像进程间通信模块那样条理化,但作为五大内核模块之中的一个,进程管理对我们理 ...

  10. &quot;CoolReaper&quot; --酷派手机后门

    文章转自:http://drops.wooyun.org/tips/4342 注:译文未获得平底锅授权,纯属学习性质翻译 原文:https://www.paloaltonetworks.com/con ...