java语言内部类和匿名内部类

内部类

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

访问功能:

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();
	}
}

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

时间: 2024-11-05 22:53:27

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

黑马程序员-java基础-内部类和匿名内部类

外部类中如果含有一个接口,那个接口默认是static 内部的访问特点: A:内部类可以直接访问外部类的成员(成员变量.成员方法),包括私有成员. 之所以可以访问外部成员,是因为内部类持有外部对象的引用 B:外部类要访问内部类的成员,必须创建对象. 内部类位置 成员位置:在成员位置定义的类,被称为成员内部类. 局部位置(成员方法里面):在局部位置定义的类,被称为局部内部类. 成员内部类: 可以直接访问外部类成员 如何直接访问内部类的成员. 外部类名.内部类名 对象名 = 外部类对象.内部类对象;

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

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

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

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

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

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

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

提起java内裤类(innerClass)很多人不太熟悉,实际上类似的概念在c++里面也有,那就是嵌套类(Nested Class),关于这俩者的区别,在下文中会有对比.内部类从表面上看,就是在类中定义了一个类(下文可以看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,他的用处可能对于初学者来说并不是那么显著,但是随着对他的深入了解,你会发现java的设计者在内裤类上面的确是用心良苦.学会使用内部类,是掌握java高级编程的一部分,他可以让你更优雅的设计你的程

java 内部类、匿名内部类

一:内部类 1:什么是内部类? 大部分时候,类被定义成一个独立的程序单元.在某些情况下,也会把一个类放在另一个类的内部定义,这个定义在其他类内部的类就被称为内部类(有些地方也叫做嵌套类),包含内部类的类也被称为外部类(有些地方也叫做宿主类) 我们先创建一个基本的内部类结构: class Outer{//外部类 //内部类 class Inner{ } } 2:内部类的划分 内部类分为成员内部类和局部内部类.内部类也会生成.class文件. 2.1: 成员内部类 定义在外部类中的成员位置,与类中的

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;

Java中内部类详解—匿名内部类

什么是内部类? 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类.   成员内部类 定义在类中方法外的类. 定义格式: class 外部类 { class 内部类{ } } 在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构.比如,汽车类Car 中包含发动机类Engine ,这时,Engine就可以使用内部类来描述,定义在成员位置. 代码举例: class Car { //外部类 class Engine { //内部类 } } 访问特点 成员内部类可