1.学习视频:1>考试系统第6课—题目的图片处理
    2>公开课 拯救稀碎的基础—>反射


    2.学习内容:**
    1>监听器ActionListener 创建对象中,会获取一个参数ActiomEvent e,这个参数有一个方法 getSource(); 可以获取资源,就是获取你选择的选项,该参数类型为Object 通用,可以向下造型为JButton(按钮)。

    2>在匿名内部类里面调用外部类,需要用对象. 点的方式

    3>类的出现是为了描述对象的
    Class是描述所有的类:(复习)
    1)类有自己的结构 (名字 继承 实现)
    2)类里面还有自己的成员(属性 方法 构造方法 包)
    Field Method Construct Package
    3)类模板可以理解为Class对象
    编译后在文件中产生了.class字节码文件,java执行命令的时候,jvm虚拟机开辟空间映射类
    补充:Object 是一个具体的类,所有的父类
    class是关键字

    4>类加载器(ClassLoader)
    当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,则会引发系统异常。而程序在启动的时候,并不会一次性加载程序所要用的所有class文件,而是根据程序的需要,通过Java的类加载机制(ClassLoader)来动态加载某个class文件到内存当中的,从而只有class文件被载入到了内存之后,才能被其它class所引用。所以ClassLoader就是用来动态加载class文件到内存当中用的。

    5>公开课知识点
    类———-归类 抽象描述 概念
    别人写好的String Integer Math
    需要自己描述的——抽象的
    对象——-从类中衍生出来的一个具体的个体
    具体的——与所属的类有相同的属性或行为
    ======================================
    反射 可能不知道类中描述了什么
    通过一些技术看到类中的元素
    先找到类中成员 反着找所属对象
    正常 先描述类,其实我们知道里面有什么
    创建对象,用这个对象去调用属性/方法
    你知道对象里面有什么
    image.png
    image.png

    6>单例模式:一个类只有一个实例化的对象,单例模式实现的核心是构造方法私有化,这样就不能在类的外部创建该类的实例化对象,要想在类的外部使用构造方法私有化的类对象,只能在类的内部实例化一个类对象,然后通过静态方法返回该实例对象的引用,在外部进行调用。构造方法被私有化,就无法在类外部实例化对象。
    例如:创建一个构造方法私有化的person类

    1. public class Person{
    2. private String name
    3. private PersonString Name){ //私有的构造方法
    4. this.name = name
    5. }
    6. }

    由于私有化的方法和属性只能在本类中看到和访问,其他方法中是看不到的!
    这样不能在外部实例化这个Person对象的类,要想在Person类的外部使用Person类的对象,只能在person类的内部实例化一个Person类的对象,并通过静态方法返回实例化对象的引用,而不能在外部实例化新的对象(不能用new创建一个新的实例化对象)

    1. public class TestSigleModel {
    2. public static void main(String[] args) {
    3. Person s = Person.getInstance();//只能通过Person类中的getInstance方法获取到实例化对象
    4. s.print();
    5. }
    6. }
    7. class Person{
    8. private String name;
    9. private static Person newPerson = new Person("百度知道"); //Person类唯一的实例化对象
    10. private Person(){};
    11. private Person(String Name){ //私有的构造方法
    12. this.name = name;
    13. }
    14. static public Person getInstance(){ //将newperson返回给外部调用处!!!
    15. return newPerson;
    16. }
    17. public void print(){
    18. System.out.println("hello");
    19. }
    20. }

    这样外部的Person类的所有对象只能是对Person内部newperson对象的引用。
    外部一千一万个对象也都只能是对Person内部newperson对象的引用。
    因为外部定义的Person类对象没有实例化能力。这就是单例设计模式,从头至尾只有一个对象的实例(单例)

    • 补充:

    在面向对象的编程中,通常把用类创建对象的过程称为实例化,其格式如下:
    如 Date date=new Date();就是用日期类创建了一个日期的对象,就叫对象的实例化。
    多数语言中,实例化一个对象就是为对象开辟内存空间,或者是不用声明,直接使用new 构造函数名,建立一个临时对象。

    7>单例设计模式的类型:
    (1)饿汉式:当类装载的时候就会创建类的实例,不管你用不用,先创建出来,然后每次调用的时候,就不需要再判断。
    (2)懒汉式:每次获取实例都会进行判断,看是否需要创建实例,如果一直没有人使用的话,那就不会创建实例。
    (3)生命周期托管:为了管理对象的产生,对象的控制权给当前类负责,生命周期托管实现对象的单例,IOC控制反转。

    8>单例模式的特点?
    (1)构造方法被私有化(private);
    (2)只能够通过getInstance()方法获取实例化对象,这样不管外部如何操作,最终也只有一个实例化对象;
    (3)在单例设计模式之中,一定会存在一个static方法,用于取得本类的实例化对象。

    9>ORM相关知识点:https://www.yuque.com/docs/share/0f7cbc49-cab1-4227-8c1a-58b3f04c5a6d?# 《ORM总结》

    总结:**
    通过今天的公开课反射的讲解,让我对反射有了更进一步的认识,也系统的复习了一下,还做了一个ORM相关的知识点总结,收获还是很大的!