Java进阶之内部类
Java进阶之内部类
在Java中,可以将一个类定义在另一个类或者一个方法里面,这样的类,叫做内部类
成员内部类
- 它定义在另一个类的内部
 - 当成员内部类和外部类拥有同名的成员变量或方法,会产生隐藏现象,在内部类中,默认是访问成员内部类中的成员,如果需要访问外部类的同名变量或方法,需要使用(外部类.this.[成员变量/成员方法])
 - 在内部类中可以无条件访问外部类,但是,外部类访问内部类的成员,需要创建内部类的对象,在通过对象来引用访问
 - 内部类拥有private、protected、public访问权限,以及包访问权限
 
局部内部类
- 局部内部类是定义在一个方法或者一个作用域里面的内,他和成员内部类的区别在于,局部内部类的访问权限仅限于方法内,或者该设定的作用域内
 - 局部内部类就像局部变量一样,不能有修饰符
 
匿名内部类
- 匿名内部类是唯一一种没有构造器的类,因为没有构造器,所以匿名内部类的范围相当有限
 - 一般来说,匿名内部类用于继承其他类或实现接口,不需要增加格外的方法
 
静态内部类
- 静态内部类不需要外部类
 - 静态内部类在加载时,全局只加载一次
 - 比如驱动的加载
 
{ try{ Class.forName("com.mysql.jdbc.Driver"); }catch(ClassNotFoundException e){ e.printStackTrace(); } }
使用内部类的好处
- 每个内部类都能独立的继承一个接口的实现
 - 方便将有一定逻辑关系的类放置在一起,同时,又对外部隐藏
 - 编写事件驱动程序,比如上边加载mysql驱动
 - 编写线程代码
 
public class A { public String nameOut; public String testOut(){ InnerClass ic = new InnerClass(); ic.testInner(); return "s"; } private class InnerClass{ public String name; public void testInner(){ } } public static void main(String[] args) { InnerClass ic = new A().new InnerClass();//InnerClass ic.testInner(); } }
    如有问题,请发送邮件至buxiaqingcheng@163.com或者buxiaqingcheng@dingtalk.com
                    
                
                
            
        
浙公网安备 33010602011771号