内部类 和匿名内部类的基本应用

自己的笔记:


内部的访问规则:

内部类可以直接访问外部类的成员,包括私有。

外部类要想访问内部类,必须建立对象。

之所以可以直接访问外部类的成员,因为内部类持有外部类的引用,格式:Outer.this.x

访问格式:

在内部类定义在外部类中的成员位置上,而且是非私有,可以在外部的其他类中。

可以直接建立内部类的对象。

格式:1. 外部类.内部类 变量名 = 外部对象.内部对象;

Outer.Inner in = new Outer().new Inner();

2. 当内部类在成员位置上,就可以被成员修饰符修饰。

比如 private:将内部类在外部类中进行封装。

static: 内部类具有了static特性。

当内部类被static修饰时,只能直接访问外部类的static成员,

出现了想问局限。

3.在外部类中,如何直接访问static内部类中非静态成员?

new Outer.Inner().function();

4. 在外部类中,如何直接访问static内部类中的静态成员?

Outer.Inner.function();

注意:

当在内部类中定义了静态成员,那么内部类必须是静态内部类。(内部类中不能有静态声明除非内部类也是静态的)。

当外部类中的静态方法访问内部类中的方法时,那么内部类必须为静态的。

什么时候使用内部类:

当描述的事物时,事物内部还有事物,该事物就应该用内部类封装:人-人体(private)

内部类中定义在局部时,

1. 不可被成员修饰符修饰。

2. 可以直接访问外部类中的成员,因为他还持有外部类的引用,

但是是不可以访问他所在的局部变量,只能访问被final修饰过的局部变量 。

匿名内部类:

1. 匿名内部类其实就是内部类的简写格式。

2. 定义匿名内部类的前提:

内部类必修是继承一个类或者是接口

3. 匿名内部类的格式:

new 父类或者接口(){定义子类的内容}

4. 其实匿名内部类就是一个匿名子类对象,而且这个对象有点胖,也可以说是带内容的对象。

5. 在匿名内部类中可以写其他成员,但每次只能调用一个方法,

但可以帮他取个名字用父类的引用指向子类的对象。

使用情况: 当使用的方法的参数类型是一个接口类型时,直接向调用方法传入一个匿名对象。

面试题:假如我没有父类,也没有接口让我去实现,还能写匿名内部类吗?

答案 :能

public class{

new Object(){

public void function(){}

}

}

内部类 和匿名内部类的基本应用,布布扣,bubuko.com

时间: 2024-12-29 05:28:05

内部类 和匿名内部类的基本应用的相关文章

Java内部类:匿名内部类(四)

Java内部类分为4个部分进行阐述,分别为概览.成员内部类.局部内部类和匿名内部类. 在本文中是Java内部类的匿名内部类,主要讲述匿名内部类的概念.匿名内部类的好处.匿名内部类的使用前提.和匿名内部类的应用场景. 1.匿名内部类的概念 没有类名的类就称作为匿名内部类 2.匿名内部类的好处 简化书写 3.匿名内部类的使用前提 必须存在继承或者实现关系才能使用 4.匿名内部类的应用场景 匿名内部类一般是用于实参 示例代码: package com.rk.innerclass; public cla

19、局部内部类和匿名内部类

package com.lei.duixiang; /** * 局部内部类 * 1.如果需要在方法中使用局部变量,该局部变量需要被设置为 final 类型 * 2.换句话说,在方法中定义的内部类只能访问方法中 final 类型的局部变量 * 这是因为在方法中定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期 * 由于该局部变量被设置为final,所以不能在内部类中改变局部变量的值 * @author Administrator * * 匿名内部类 OutClass4 */ inte

Java内部类详解--成员内部类,局部内部类,匿名内部类,静态内部类

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟.下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3811445.html 一

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

Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液.跳动),显然,此处不能单方面用属性或者方法表示一个心脏了,而需要一个类,但是这个类要依赖于人这个类存在(因为心脏不能脱离人体而存活,当然不考虑现今社会的发达科技,只从正常情况下来说),所心脏以需要写在人类的内部.内部类就相当于其中的某个器官之一. 首先看看什么是内部类:在类的内部定义另一个类.没错

黑马程序员-----内部类、匿名内部类应用

class Outer{ // 定义外部类private String info = "helloworld" ; // 定义外部类属性private static String info2 = "helloeclipse"; // 定义静态变量class Inner{ // 定义内部类public void print(){// 内部类的好处之一:直接访问外部类属性System.out.println(info) ; // 直接访问外部类属性}}static cl

java面对对象(六)--内部类、匿名内部类

内部类 可以在一个类的内部定义另一个类这种类成为内部类或嵌套类,比如: 1 class Outer{ 2 - 3 class Inner{ 4 -. 5 } 6 } 7 class Outer1{} // 这个Inner1不是Outer1的内部类,不在Outer1的类体括号内 8 class Innter1{ 9 -- 10 } 11 Class Outer2{ //Inner2虽然是在Outer2的方法内,但还是在Outer2的类体括号内,是内部类 12 -- 13 public void t

Java之局部内部类和匿名内部类的区别详解(附源码)

前言 前面提到过,可以在代码块里创建内部类,典型的方式是在一个方法体里面创建.局部内部类不能有访问说明符,因为它不是外围类的一部分:但是他可以访问当前代码块内的常量,以及此外围类的所有成员.下面的例子对局部内部类与匿名内部类的创建进行了比较. 示例源码 package com.mufeng.thetenthchapter; interface Counter { int next(); } public class LocalInnerClass { private int count = 0;

局部内部类和匿名内部类的对比

创建内部类的典型的方式是在一个方法体的里面创建,局部内部类不能有访问说明符,因为它不是外围类的一部分,但是它可以访问当前代码块内的常量,以及此外围类的所有成员.下面的例子对局部内部类与匿名内部类的创建进行了比较. 具体代码实现: 1 package thinking.in.java.demo; 2 3 //定义一个接口 4 interface Counter { 5 int next(); 6 } 7 8 // 主类LocalInnerClass 9 public class LocalInne

面向对象(局部内部类和匿名内部类)

/** * Created by rabbit on 2014-08-05. * 内部类定义在局部时, * 1.不可以被成员修饰符修饰 * 2.可以直接访问外部类中的成员,因为还持有 * 外部类中的引用.但是不可以访问他所在的局部中 * 的变量.只能访问被final修饰的局部变量. * * 匿名内部类 * 1.匿名内部类就是内部类的简写格式 * */ class outer4 {     int x = 3 ;     void method()     {         final int