内部类(inter class)
内部为顾名思义,是一个定义在一个类的内部的类,它们的方法可以访问包含它们的外部类的字段,内部类在设计具有相互协作关系的类集合时很有用。
1.局部内部类定义的位置
首先它是一个内部类,我们可以知道他肯定要定义在一个类的内部,而根据它一些具体的特征我们可以定义一个局部内部类
一些属性及其特征
1,比如定义在外部类的方法中 并且有类名
class Outer02{//外部类
public void m1(){//一个外部类的方法
//在里面定义一个内部类
class inter {//这就是一个局部内部类
}
}
}
2.可以直接访问外部类的私有属性
虽然是一个内部类但是本质上还是一个类,类所具有的属性他全可以具有
如上图外部类的私有成员可以正常调用
3.不能添加访问修饰符,因为它本身就是一个局部变量,局部变量不能使用修饰符,但可以使用final修饰
如上图所示
不加final修饰可以被其他内部类继承,但是加了final修饰之后则不能被继承
4.作用域
作用域仅仅在所定义的代码块或者方法中
5.若局部内部类想要调用外部类的成员可以直接调用,而外部类要调用内部类的成员则要先创建对象(new一个)然后调用即可
public class LocalInterClass{
public static void main(String[] args) {
Outer02 outer02 = new Outer02();
outer02.m1();
}
}
class Outer02{//外部类
//外部类中的私有方法都是可以在内部类中直接调用的
private int n = 1;
private void n1(){
System.out.println("这里是n1");
}
public void m1(){
class inter {//这就是一个局部内部类
public void info(){
//都是可以直接调用
System.out.println(n);
n1();
}
}
inter inter = new inter();
inter.info();
}
}
6.内部类不能被其他类使用
7.如果外部
package com.interClass;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
public class LocalInterClass{
public static void main(String[] args) {
Outer02 outer02 = new Outer02();
outer02.m1();
}
}
class Outer02{//外部类
//外部类中的私有方法都是可以在内部类中直接调用的
private static int n = 1;
private void n1(){
System.out.println("这里是n1");
}
public void m1(){
class inter {//这就是一个局部内部类
int n = 2;
public void putout(){
System.out.println("这个是内部类的n="+n);
System.out.println("这个是外部类的n="+Outer02.this.n);//非静态可以这样通过this来调用
System.out.println("这个是外部类的n="+Outer02.n);
}
public void info(){
//都是可以直接调用
System.out.println(n);
n1();
}
}
inter inter = new inter();
inter.putout();
}
}
类和内部类有重名的成员则遵循就进原则,如果想访问具体的属性可通过this来实现