内部类的了解


在Java中,可以把一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包含四种:静态内部类、匿名内部类、成员内部类和局部内部类。

public class A{
    
    
	class B{
    
    	
	}
}

注意:
定义在class类名{}花括号外部的,即使是在一个文件里,也不是内部类了

静态内部类

静态内部类的定义:

public class Test{
    
    
	static class B{
    
    	
	}
}

和静态变量、静态方法类似,静态内部类也是和当前类(Test)绑定的,
使用时通过Test类来调用,如:

public class Test{
    
    
	static class B{
    
    	
	}
	public static void main(String [] args){
    
    
	B b = new Test.B();
	//在当前Test类 中使用的时候,也可以省略
	B b = new B();
	}
}

静态内部类和普通的外部类基本没有区别,唯一的区别在于名字上。

非静态内部类

class A{
    
    
	class B{
    
    	
	}
}

非静态内部类,必须先有外部类的对象,才能使用——和对象有关

在一切用到内部类(静态OR非静态)的地方,都可以不用内部类去解决

匿名类

非静态内部类的变形 => 匿名类 (没有名字的类)

定义一个类的子类(没有名字),通知直接使用这个类,实例化出一个对象,这个类只能用一次

public class Test{
    
    
	
	public static void main(String [] args){
    
    
		B b = new B(){
    
    
		@override
		//重写父类的方法,
		public void xxx(){
    
    		
		}
		};
	}
}

和B b = new B();这样的实例操作不同,匿名类后面会跟着一个大括号,重写父类的方法。
匿名类中只有一个方法需要重写的时候,可以使用lambda表达式
关于lambda表达式,我们以后再继续了解。

总结

  • 类:是放置静态内容的组织单位,是用来实例化对象的模板
  • 从定义类的位置来讲,类分为顶级类(外部类)和内部类
  • 顶级类(外部类)分为又分为带public‘和不带public的
  • 内部类分为 静态内部类和非静态内部类
  • 非静态内部类 存在 匿名类
  • 匿名类中只有一个方法需要重写的时候,可以使用lambda表达式

猜你喜欢

转载自blog.csdn.net/weixin_52142731/article/details/113604307
今日推荐