• Java进阶之内部类


    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
  • 相关阅读:
    MVC 学习(二)之Linq to Sql 简单Demo
    MVC 学习(一)Linq to Entities 简单Demo
    MVC学习(三)Code-First Demo
    pickle 模块
    json 模块
    sys 模块
    os 模块
    random(随机)模块
    time 模块
    python之函数基础
  • 原文地址:https://www.cnblogs.com/zhenzhunaichabujiatang/p/13479525.html
Copyright © 2020-2023  润新知