【尚硅谷-Java学习】6.12类的结构之五:内部类

Java类及类的成员:


内部类

一个类定义于另一个类的内部。

1.成员内部类

又分为 静态成员内部类 和 非静态成员内部类。

<1> 作为外部类的成员

  • 可以调用外部类的结构
  • 可以用 static 修饰
  • 被四种权限修饰符修饰

<2> 作为一个类

  • 可以定义属性、方法、构造器
  • 可以被 final 修饰,表示不能被继承。
  • 可以被 abstract 修饰

2.局部内部类

在方法、代码块、构造器内

内部类的使用

1.如何实例化成员内部类

创建静态的成员内部类:外部类.内部类 对象名 = new 外部类.内部类();
创建非静态的成员内部类:先创建外部类对象外部类 对象名1 = new 外部类();外部类.内部类 对象名 = 对象名1.new 内部类();

2.如何在成员内部类中区分调用外部类的结构

没有冲突时直接调用即可。

当外部类和内部类的属性冲突:

  • 调用内部类的属性:this.属性名
  • 调用外部类的属性:外部类.this.属性名

3.开发中局部内部类的使用

<1>常见应用场景:方法 返回一个实现了xxx接口的类的对象。

class Person{
	public Comparable getComparable(){

		class MyComparable implements Comparable{

			@Override
			public int compareTo(Object o) {
				
				return 0;
			}
			
		}
		return new MyComparable();
		
	}
}

<2> 局部内部类的方法中

例如,声明在方法method1()中的局部内部类,局部内部类中定义方法method2(),当在method2中调用method1里的局部变量时,要求此局部变量声明为 final 。

class 外部类{
	public void method1(){
		int num  = 12;
		class 内部类{
			public void method2(){
				//输出num
			}
		}
	}
}

在jdk 7及之前版本,要求此局部变量显式声明为final。
在jdk 8及以后版本,可以省略final的声明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值