Java 入门 七 (Java 内部类)

 

Java 入门 七 (Java 内部类)

 

说实在话 实际开发中用到内部类的 很少很少几乎就没 就算用到也是用来 匿名内部类 其他 的几乎真心用不到。

 

可以了解下,用来的时候在来看也来得及。很简单的东西。

 

 

注意!~ 内部类相同于 外部类的一个属性 和 外部类的其他属性 是同级的 只不过访问的方式不同 (内部类私有的方法肯定也能被外部类访问)

内部类可以访问外部类的任意变量和方法。

静态方法里面 只能访问 静态变量和静态方法 局部变量


成员内部类


里面只能定义非静态的变量和方法(非静态的 也就是不带关键字static 的变量)

有外部类的引用 外部类名.this 引用


静态内部类


里面定义 静态的变量和方法 非静态的变量和方法

只能访问外部类静态的变量和方法

没有外部类的引用


匿名内部类


经常用来 作为某个类的唯一子类或者 某个接口的唯一实现类(如果要继承的父类 只有有参的构建函数 那么就必须要用super关键字 调用它有参数的构建函数 要不报错)


局部内部类

在外部类方法体中定义的类叫局部内部类,局部内部类能只用 默认修饰符和 final修饰符修饰 abstract修饰符,访问方法的局部变量时,方法的局部变量带final 才能被访问。

 

 

 

内部类总结:


1.首先,把内部类作为外部类的一个特殊的成员来看待,因此它有类成员的访问权限:private ,protected,默认(default),public

它有类成员的修饰符: static,final,abstract

2.非静态内部类nested inner class,内部类隐含有一个外部类的指针this,因此,它可以访问外部类的一切资源(当然包括private)

外部类访问内部类的成员,先要取得内部类的对象,并且取决于内部类成员的封装等级。

非静态内部类不能包含任何static成员.

3.静态内部类:static inner class,不再包含外部类的this指针,并且在外部类装载时初始化.静态内部类能包含static或非static成员.

静态内部类只能访问外部类static成员.

外部类访问静态内部类的成员,循一般类法规。对于static成员,用类名.成员即可访问,对于非static成员,只能用对象.成员进行访问

4.对于方法中的内部类或块中内部类只能访问块中或方法中的final变量。

类成员有两种static , non-static,同样内部类也有这两种

non-static 内部类的实例,必须在外部类的方法中创建或通过外部类的实例来创建(OuterClassInstanceName.new innerClassName(ConstructorParameter)),并且可直接访问外部类的信息,

外部类对象可通过OuterClassName.this来引用

static 内部类的实例, 直接创建即可,没有对外部类实例的引用。

内部类不管static还是non-static都有对外部类的引用

non-static 内部类不允许有static成员

方法中的内部类只允许访问方法中的final局部变量和方法的final参数列表,外部类中的方法和变量也

可以被访问。方法中的内部类不能在方法以外访问.

匿名内部类如果作为接口的实现类,必须实现指定接口的方法. 匿名内部类如果继承某类,参数必须按父类的构造函数的参数传递。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值