java--内部类
一、定义内部类
- 当一个类定义在另一个类的内部,称之为内部类;
- 内部类(Inner)只服务于(Outer),可以获取内部类的属性和方法;
- 定义内部类对象时,一般通过外部类的构造方法或普通方法创建对象。
public class Outer { private String name = "zhang3";//外部类的私有属性 public Outer() { Inner i = new Inner(); i.nameInfo(); } /*内部类Inner*/ class Inner{ //成员内部类 public void nameInfo(){ name = name + "info"; } } public static void main(String[] args) { Outer o = new Outer(); System.out.println(o.name); } }
二、匿名内部类
- 匿名内部类,就是new接口和new抽象类
public interface User{ public void login(); } public class Test01{ public static void main(String[] args){ User u=new User(){ @Override public void login() { System.out.println("show.."); } }; u.login(); } }
三、非静态内部类
外部类名.内部类名 变量名
外部类对象.new 内部类名();
1、非静态内部类必须寄存在一个外部类对象里,因此,如果有一个非静态内部类对象,那么一定存在对应的外部类对象;
2、非静态内部类对象单独属于外部类的某个对象;
3、非静态内部类不能由静态方法,静态属性,静态初始化;
4、外部类的静态方法,静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义变量,创建实例
四、静态内部类
外部类名.内部类名 变量名
new 外部类名.内部类名();
所谓静态内部类,就是使用static关键字修饰的成员内部类,与成员内部内部类相比,在形式上,静态内部类只是在内部类前增加了static关键字,但在功能上,静态内部类中只能访问外部类的静态成员,同时通过外部类访问静态内部类成员时,可以跳过外部类从而直接通过内部类访问静态内部类成员。
本文来自博客园,作者:LXXXXxZz,转载请注明原文链接:https://www.cnblogs.com/l11111/p/16246570.html