标签:继承 方法 stat 默认 编译 必须 就是 类的方法 out
我们已经知道,在类内部可以定义成员变量与方法。在java中,还可以在类的内部定义类。这种在类的内部定义的类,称为内部类。内部类所在的类称为外部类。
java中的内部类可以分为四种,分别是:静态内部类,成员内部类,局部内部类,匿名内部类。
静态内部类:作为类的静态成员,存在于某个类的内部。
成员内部类:作为类的成员,存在于某个类的内部。
局部内部类:存在于某个方法内部的类。
匿名内部类:存在于某个类的内部,但是无类名的类。
1.静态内部类
静态内部类的定义方法如下:
class outer {
static class Inner {
}
}
这里,Inner类存在于Outer类的内部,作为Outer的静态成员。由于静态成员可以在不创建类的情况下被使用,因此,我们可以不创建Outer类的对象,而直接引用Inner类。
静态内部类虽然是外部类的成员,但是在未创建外部类的对象的情况下,可以直接创建静态内部类的对象。此外,静态内部类可以引用外部类的静态成员变量和静态方法,但是不能引用外部类的普通成员。例如,如果在静态内部类中引用外部类的普通成员,就会出现编译错误。
2.成员内部类
成员内部类的定义方法如下:
class outer {
class Inner {
}
}
这里,Inner类存在于Outer类的内部,作为Outer的成员。与静态内部类不同的是,Inner类定义时没有static修饰符,同时,只有创建了Outer类的实例对象后,才能使用Inner类的对象。
成员内部类可以调用外部类的所有成员。但是只有创建了外部类的对象后,才能引用外部的成员。
3.局部内部类
局部内部类是在类的方法内部定义的类。局部内部类只能在方法内部中使用。一旦方法执行完毕,局部内部类就会从内存中被清除。
必须注意的是,如果局部内部类中要使用它所在的方法中的局部变量,那么就需要将这个局部变量定义为final的。
4.匿名内部类
匿名内部类是一种特殊的内部类,这种类没有名字。匿名内部类的定于与对象的创建合并在一起,整个动作看起来像产生对象似的。匿名内部类是唯一对象而定义的类。当我们只需要创建一个类的对象,而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚。
匿名内部类一般通过如下形式定义,并且在定义类的同时进行对象实例化。
new 类或者接口的名字() {
//匿名内部类的主体
}
new 后面是一个类或者接口,然后是一个大括号。在大括号中是匿名内部类的主体,这个主体就是类或者接口的实现。如果是类,那么匿名内部类是该类的子类。如果是接口,匿名内部类需要完成对接口的实现。
5兄弟类:是指跟本类处于平级的一个类,兄弟类的访问修饰符只能是"默认"因为它跟主类本来就是在同一个文件里不能写成public,protected,private.兄弟类,只能在同一个包下,以及本类范围中可以使用。
final修饰类表示这个类不能被继承。
标签:继承 方法 stat 默认 编译 必须 就是 类的方法 out
原文地址:https://www.cnblogs.com/zdf-2315033625/p/11011048.html