算算学习Java也有两个多月了,但是对于Java中这个类那个类的着实有点分不清,平时写代码也不常用。主要还是脑子不太好使,对于网上铺天盖地的定义实在是理解不了,所以就自己整理了一下,每个都附上一段小例子助于理解。
首先要了解什么是内部类和外部类:
- 外部类
这是一个相对与内部类的概念,如果一个类中嵌套了另一个类,我们就叫他外部类 - 内部类
将一个类的定义写在另一个类的定义内部就叫内部类(Inner Class)也可以称为嵌套类(Nested Class)。
class Outer{
//外部类
private String name;
//-----------------------
class Inner{
//内部类
public void inner(){
int a = 1;
}
}
}
知道这个之后就好办了,内部类又分为四大类:非静态内部类,静态内部类,匿名内部类,局部内部类。由此顾名思义:非静态内部类就是没有static修饰的,静态内部类就是有static修饰的,匿名内部类就是类没有名字,局部内部类也可以称方法内部类就是定义在方法内部的类
下边来介绍这几种的区别及特性:
- 非静态内部类(成员内部类)
- 外部类访问成员内部类有两种方式:在外部类方法中创建内部类对象来访问内部类的元素 或者在主方法中创建对象
- 成员内部类可以直接访问外部类的任何属性或方法(包括私有属性和静态成员)
- 若成员内部类和外部类出现同名方法,则默认访问成员内部类方法
- 虽然成员内部类很霸道,但他也有弱点:当想创建一个成员内部类对象时,必须要有外部类的对象才行
成员内部类秉承的原则:你的就是我的,我的还是我的,求我才能给你
public class Outer {
private String name = "小明";
public void outer(){
//外部类需要创建内部类对象才能访问内部类的元素
Inner in = new Inner();
in.inner();
System