JavaSE-day07

一、final关键字
1.final修饰类:类不能被继承。例工具类,java自带Math类
2.final修饰方法:方法不能被重写(可以被继承),如工具类中的方法
3.final修饰变量:
变量:a成员变量(1静态变量 2实例变量) b局部变量
修饰静态变量(static)时只能被赋值一次,修饰实例变量无意义(每个对象都有不一样的值)
修饰局部变量不能被修改,修改引用型变量时地址不能被修改但里面的数值可以(因为变量名指向地址)。
4.常量:用 static final 修饰的变量就是常量,常量在java文件生成class文件时就会被宏编译为字面量,不会影响执行效率。

二、单例类:确保该类只能创建一个对象
1.步骤:
1)私有化类构造器
2)初始化静态变量(饿汉式在这一步new对象)
3)向外部提供public方法返回唯一对象(懒汉在这一步new对象)
2.饿汉式单例:先创建,外部直接调用
3.懒汉式单例:有需要时再创建
4.什么是设计模式:最优解决某类问题的方案,主要学会怎么写
5.单例模式的应用:任务管理器(只需要一个)

三、枚举类(多例类)
1.定义时用enum关键字修饰,不用class修饰
2.枚举类第一行代码是枚举类的对象名称!,每个名称记住枚举类的一个对象,用逗号隔开。
3.枚举类构造器私有(写不写都一样)不能创建对象,枚举类不可被继承,且枚举类继承父类Enmu
4.继承父类Enmu很多方法,如ordinal(拿索引)和name(拿对象名)
5.应用场景,做信息的标志与分类。(常量也可以做,但是枚举类参数值受到约束更准确)

四、抽象类(一种特殊的父类,用于被子类继承,为了更好的支持多态)
1.用abstract修饰的类或方法称为抽象类或抽象方法。
2.抽象类可以没有抽象方法,但有抽象方法的类一定是抽象类(抽象类中可以有非抽象方法)!!
3.抽象方法只有方法的声明,没有方法体部分(需要子类重写)public abstract void run();
4.抽象类不可以创建对象!!(虽然抽象类具有普通类全部的东西,如构造器且是共有的,但是由于创建对象调用方法没有方法体所以不能创建对象)
5.继承抽象类的类必须重写抽象类的全部抽象方法(非抽象方法可以不重写),否则也只能是抽象类。(子类和子类方法不带abstract)
6.模板方法设计模式:
1)减少大部分步骤相同,但个别步骤不同的模板设计
2)定义抽象父类,不同的步骤定义抽象方法让子类重写
3)相同的步骤在父类中用final关键字修饰的非抽象方法写(子类不重写该方法)
4)主函数调用子类对象调用父类的模板方法多态实现设计
5)用final关键字修饰模板方法(可以被继承),该模板方法不能被子类重写,设计目的。

五、接口(接口似干爹,继承的类似亲爹)
1.接口使用interface关键字定义的一种结构,(jdk8前)接口中只能有抽象方法(省略public abstract不写)和常量
2.接口用来给类实现的,实现类可以实现多个接口,必须重写完接口中的所有抽象方法否则该类只能是抽象类
3.接口也不能创建对象
3.jdk8新增三种方法:增强了接口的功能,
1)(实例方法对象调用)默认方法default(省略public):只能实现接口的类创建的对象调用
2)private方法:只有default方法中调用
3)static方法:只能使用当前接口名调用(与继承不同子类可以调)
4.注意事项:
a.接口与接口可以多继承,一个接口可以继承多个接口!!
1)类与类:单继承
2)类与接口:多实现
3)接口与接口:多继承
b.一个接口继承多个接口时,如果俩个接口方法签名冲突,则不支持多继承也不支持多实现
c.一个类同时继承父类和实现接口,接口和父类中方法同名,优先用父类的方法

六、抽象类与接口的比较
1.相同点:
1)多是抽象形式,都有抽象方法,都不能创建对象
2)都是派生子类形式,抽象类被子类继承,接口被实现类实现
3)继承抽象类或实现接口,都必须重写完它们全部的的抽象方法,否则自己成为抽象类
4)都支持多态,都可以实现解耦合
2.不同点:
1)抽象类可以定义类的所有普通成员,接口只能定义常量和抽象方法(jdk8之后新增三种方法)
2)抽象类只能单继承,但是接口可以多实现后加单继承
3)抽象类,体现模板思想,更利于做父类,实现代码复用
4)接口更适合做功能的解耦合

posted @ 2024-11-14 13:56  南飞小猪  阅读(5)  评论(0)    收藏  举报