zoukankan      html  css  js  c++  java
  • Java知识点补充1

    1.反射获取到Class类的3种方式

    • Class.forName("类的路径")

    • 类名.class

    • 实例.getClass()

    2.Java创建对象的方式有4种

    • 通过new语言实例化一个对象

    • 通过反射机制创建对象

    • 通过clone()方式创建一个对象

    • 通过反序列化创建对象

    3.内部类4种

    • C++中说法为嵌套类,Java说法为内部类

    • 静态内部类

    • 成员内部类

    • 局部内部类

    • 匿名内部类

    (1)静态内部类

    • 声明static的内部类

    • 不能访问外部类的普通成员变量

    • 只能访问外部类的静态成员和静态方法

    class outerClass{
        static class innerClass{}   //静态内部类
    }

    (2)成员内部类

    • 非静态内部类

    • 可以获得外部类的所有属性和方法

    • 不可以定义静态属性和方法

    class outerClass{
        class innerClass{}   //成员内部类(普通内部类)
    }

    (3)局部内部类(很少使用)

    • 定义在代码块内部的类,类似于变量

    • 不能被public、protected、private以及static修饰

    • 能访问外部类的所有属性和方法

    • 只能访问方法中的final类型局部变量

    class outerClass{
        public void mothed(){
            class innerClass{}   //局部内部类
        }
    }

    (4)匿名内部类

    • 没有类名的内部类

    • 不能使用class、extends、implements

    • 不能有构造函数

    • 不能定义静态成员、方法和类

    • 不能是public、protected、private、static

    • 只能创建匿名内部类的一个实例

    • 一个匿名内部类一定在new后面,且必须继承一个父类或实现一个接口

    • 匿名内部类是一个局部内部类,所以局部内部类的所有限制都生效,例如只能访问方法中的final类型局部变量

    为什么必须是final类型的局部变量:

    • 首先final类型的局部变量在编译器就解析完成一直保留,然后例如下面案例在方法中创建一个线程,当方法执行完毕之后非final的变量都被销毁了,那么线程中的变量如果不是final类型就会出错,为了避免这一点所以必须为final类型

    • https://www.cnblogs.com/hwaggLee/p/4492425.html  

    class outerClass{
        public void mothed(){
            Thread tread = new Thread(new Runnable() {      //匿名内部类
                @Override
                public void run() {
                    
                }
            });
        }
    }
  • 相关阅读:
    Build-in Function:abs(),all(),any(),assii(),bin(),issubclass(),bytearray(),isinstance()
    函数及while实例
    提示'HTTP消息不可读'
    python中关于不执行if __name__ == '__main__':测试模块的解决
    python输出测试报告测试成功
    SqlServer——批量插入数据
    网页样式——各种炫酷效果持续更新ing...
    网站部署发布到互联网等整套流程
    如何远程操控别人的电脑?我来教你
    代码生成工具——CodeSmith
  • 原文地址:https://www.cnblogs.com/zhihaospace/p/12561441.html
Copyright © 2011-2022 走看看