内部类

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

访问功能:

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. React-Native入门

    React-Native入门指导之iOS篇 React-Native 入门指导系列教程目录 一.准备工作 (已完成) 二.项目介绍与调试 三.CSS样式与Flex布局 四.常用UI控件的使用 五.JS ...

  2. oracle 打开trace,并分析trace

    SQL> oradebug event 10046 trace name context forever,level 8 ORA-00072: process "Unix proces ...

  3. mbed列--基于飞思卡尔FRDM KL25Z鼠标设计的高速实现

    ========================================================== 原创文章转载请注明:blog.csdn.net/guo8113 ========= ...

  4. 开发随笔——NOT IN vs NOT EXISTS

    原文:开发随笔--NOT IN vs NOT EXISTS 原文出处: http://blog.csdn.net/dba_huangzj/article/details/31374037  转载请引用 ...

  5. IE8/IE9无法启用JavaScript怎么办

    在IE8/IE9 中,有些同学在浏览网页时,收到提示:“需要启用 JavaScript …”,并且会发现网页上某些功能不能用了,比如点击网页里的按钮没反应等等.这个是因为浏览器的JavaScript ...

  6. 【蓝桥杯】 PREV-1 核桃数

    主题链接:http://lx.lanqiao.org/problem.page?gpid=T24   历届试题 核桃的数量   时间限制:1.0s   内存限制:256.0MB        问题描写 ...

  7. NHibernate框架魅力美

    Nhibernate属于ORM框架之中的一个,在了解NHibernate之前我们先来了解什么是ORM? ORM框架是为了将类对象和关系建立映射.事实上说白了,就是通过一个 Mapping将我们的实体类 ...

  8. linux 字符界面浏览器 w3m(转)

    最近找到了几个linux终端下使用的浏览器,主要用来测试本机web服务器是否搭建成功.因为我们一般是用ssh客户端连接linux的,所以很需要一个字符界面的浏览器.找了几个显示都不理想,只有w3m用起 ...

  9. MongoDB(两)mongoDB基本介绍

    MongoDB介绍 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库其中功能最丰富,最像关系数据库的.他支持的数据结构很的松散,是类似json的bjson格式,因此能够存储比 ...

  10. MySQL 更新中国列:1366 Incorrect string value 问题解决了

    周围环境:Win7 64位置,mysql-5.6.25-winx64,MySQL workbench 问题:MySQL在更新时出现异常: warning(s): 1366 Incorrect stri ...