
一 面向对象高级1 认识final关键字比如工具类它不需要被继承所以可以使用final成员变量写在类里面的而局部变量是写在方法内部for内部的是局部变量而在成员变量里面有static修饰的是静态成员变量无static修饰的是实例成员变量在main和创建的buy方法里面的是局部变量2.常量3.单例类设计模式私有构造器防止外部进行使用饿汉式单例a1和a2其实是一个也是地址 也是true懒汉式单例3.返回的是B类型的对象 因为public static B也是同一个 所以是true4.认识枚举当使用输出a1的时候是x 而不是地址 说明里面进行了重写tostring枚举类的常见应用场景如果使用常量 那么传入constant 1000也没事 不受约束使用枚举的时候就只能使用枚举的数据5.认识抽象类抽象的概述使用抽象类的好处如果用这个方法会看着比较的乱但是用抽象类看着就很便利了抽象类模板方法设计模式把相同的写在一起 把不同的再写在自己里面进行创建对象的时候是使用的子类但是在进行调用方法的时候需要使用父类的方法 因为方法是父类给的使用final 防止模板被重写6.认识接口接口的概述但是抽象类里面不可以进行省略 接口里面可以进行省略public abstract接口也不可以进行创建对象因为它的方法里面没有具体的内容没有办法进行调用接口没有对象 接口的实现类可以有对象接口的好处当使用Driver anew Teacher() 的时候不合适可以立马切换为Driver anew student() Driver的方法不需要进行改变直接可以进行使用Teacher或者student里面的具体方法接口的应用案例定义接口进行将学生的数据传入到第一个方法里面第二套方案接口-JDK8新增的三种方法静态方法可以在自己的子类里面可以使用但是在接口里面自己的子类都不能使用接口的注意事项此时两个方法进行了冲突但是这个时候就是没有问题的但是想要使用接口的只能进行中转抽象类和接口的区别对比7.综合案例先定义家电的角色因为只有父类是有参构造器因此在TV里面也需要进行传入参数要不然进行传入不进去解释如下定义开关的方法使用接口进行定义开关的功能这样可以随时的进行解耦合创建家电的智能系统提示用户进行操作或者在定义一个退出进行使用扩展因为我们发现从头到尾都在使用一个例子 就是smartHomeControl因此我们可以创建一个单例类进行调用类、成员变量和局部变量interface BoyFriend{ void chat(); } class Student extends People implements Driver, BoyFriend{ Override public void chat() { System.out.println(聊天); } public void study(){} // Student自己独有的方法 } BoyFriend bf new Student(); 对象的真实类型Student 能不能调用方法编译阶段只看 引用变量的类型不看 对象真实类型 方法跑哪一段代码运行时才看 对象真实类型。 bf.chat()接口里有这个方法 ✅ 可以调用运行执行 Student 的 chat bf.study()接口里没有这个方法 ❌ 编译直接报错代码根本跑不起来不是运行空白 bf.chat(); ✅ 可以调用chat是接口里的方法 聊天 bf.study(); ❌ 报错左边是BoyFriend接口看不到study方法