JAVA内部类

一,内部类
1.概念:在- -类的内部定义-个完整的类
2.语法
class outer{
class Inner{
}
3.特点
●编译之后可以生成独立的字节码文件(外部类类名$内部类类名.class )
●内部类可以直接访问外部类的私有成员,而不破坏封装
●可以为外部类提供功能组件
4、内部类分类
1.成员内部类
。定义在类的内部,与成员变量同级(对比成员变量进行学习)
。创建内部类的对象,必须依赖外部类对象(内部类是外部类的成员)
outer o=new outerO;/ /创建外部类对象
Inner i=o . new InnerO ;//创建内部类对象
。成员内部类可以直接访问外部类的私有属性
。当内部类中有变 量和外部类属性重名时,优先使用内部类中的变量
b访问外部类属性外部类米名.this. 属性名
2.静态内部类
。位置:类的内部,方法的外部,被static修饰(对比静态变量)
class outer{
static class Inner{}
}
0创建对象,必须依赖外部类类名
Inner i=new outer . InnerO;
。静态内部类中可以定义静态成员,访问直接使用类名
■Outer .Inner.静态属性名
■Outer .Inner.静态方法名(参数) ;
。静态内部类中只能访问外部类的静态成员(静态属性和静态方法)

package innerclass.member;

import innerclass.member.Outer.Inner;

public class TestMemberInnerClass {
	public static void main(String[] args) {
		//创建外部类对象
		Outer o = new Outer();
		//创建内部类对象
		Inner i=o.new Inner();
		//System.out.println(i.a);
		i.m1();
		//System.out.println(i.a);
	}
}
//外部类
class Outer{
	//属性
	private int a=10;
	//方法
	public void m() {}
	//构造方法
	//代码块
	//成员内部类
	class Inner{
		//属性
		int a=20;
		//方法
		public void m1() {
			int a=30;
			System.out.println(a);//30,优先局部变量
			System.out.println(this.a);//在外部类的属性和内部类的属性重名时优先访问内部类属性
			System.out.println(Outer.this.a);//访问外部类属性 外部类类名.this.属性名
			System.out.println("m1()----");
		}
	}
}

静态内部类

package innerclass.staticinner;

public class TestStaticInnerClass {

	public static void main(String[] args) {
		// 不必依赖外部类对象,需要依赖外部类类名
		Outer.Inner i=new Outer.Inner();
		System.out.println(i.a);
		System.out.println(Outer.Inner.b);
		i.m();

	}

}
//外部类
class Outer{
	static int c=30;
	//静态内部类
	static class Inner{
		int a=10;
		static int b=20;
		public void m() {
			System.out.println(c);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值