第一阶段模块二 特殊类


    特殊类
        内部类
            基本概念:当一个类的定义出现在另一个类体中时,那么这个类叫做内部类(Inter),而这个内部类所在的类叫做外部类(out)
            类中的内容
                成员变量
                    子主题 1
                成员方法
                构造方法
                静态成员
                构造块
                静态代码块
                内部类
            分类
                普通内部类
                    直接将一个类的定义放在另一个类的累体重中
                        
                    隶属于外部类的成员并且是对象层级
                      可以被  abstract finnel  private protected修饰
                    普通内部类需要使用外部类对象来创建对象
                    如果内部类访问外部类中与本类内部同名的成员变量或方法时 需要使用this关键字
                    使用方法
                静态内部类
                    使用static关键字修饰的内部类 隶属于类的层级
                    静态上下文中不能访问非静态的成员 因为此时可能还没有创建对象
                    使用方法
                    静态内部类不能直接访问外部类的非静态成员
                    静态内部类可以直接创建对象
                    同名 1.用类名点的方式访问 访问静态的 2非静态的 必须 new 对象 点的方式 访问
                局部内部类
                    放在方法体中的类
                    局部内部类 只在当前方法体的内部好使
                    局部内部类 不能使用访问控制符 ( public  private  protected) static关键字修饰
                    局部内部内可以在方法体中直接创建对象
                    局部内部类可以使用外部的方法的局部变量 但必须有是 final 的 由局部内部类和局部变量的声明周期不同所至
                    子主题 6
                匿名内部类
                    没有名字的内部类 
                    接口/父类类型 引用变量名 = new 接口/父类类型() { 方法的重写 };
                    lamda ()-->{}
                    子主题 4
                    子主题 5
        枚举类
            枚举的基本概念
                在日常生活中这些事物的取值只有明确的几个固定值,此时描述这些事
物的所有值都可以一一列举出来,而这个列举出来的类型就叫做枚举类
型。
            枚举的定义
                使用public static final表示的常量描述较为繁琐,使用enum关键字来定
义枚举类型取代常量,枚举类型是从Java5开始增加的一种引用数据类型
                枚举值就是当前类的类型,也就是指向本类的对象,默认使用public
static final关键字共同修饰,因此采用枚举类型.的方式调用。

                枚举类可以自定义构造方法,但是构造方法的修饰符必须是private,默
认也是私有的
            枚举要求所有枚举值都必须放在枚举类型的最前边
            所有的枚举类都继承自java.lang.Enum类,
                static T[] values()
                    返回当前枚举类中的所有对象
                String toString()
                    返回当前枚举类对象的名称
                int ordinal()
                    获取枚举对象在枚举类中的索引位置
                static T valueOf(String str) 
                    将参数指定的字符串名转为当前枚举类的对象
                int compareTo(E o) 
                    比较两个枚举对象在定义时的顺序
            枚举类实现接口的方式
                枚举类实现接口后需要重写抽象方法,而重写方法的方式有两种:重写
一个,或者每个对象都重写。
        抽象类
            概念
                子主题 1
            抽象类和抽象方法的关系
                • 抽象类中可以有成员变量、构造方法、成员方法;
                • 抽象类中可以没有抽象方法,也可以有抽象方法
                拥有抽象方法的类必须是抽象类,因此真正意义上的抽象类应该是具有
抽象方法并且使用abstract关键字修饰的类。
            抽象类的实际意义
                • 抽象类的实际意义不在于创建对象而在于被继承。
                当一个类继承抽象类后必须重写抽象方法,否则该类也变成抽象类,也
就是抽象类对子类具有强制性和规范性,因此叫做模板设计模式。
            优缺点
                在以后的开发中推荐使用多态的格式,此时父类类型引用直接调用的所
有方法一定是父类中拥有的方法,若以后更换子类时,只需要将new关键
字后面的子类类型修改而其它地方无需改变就可以立即生效,从而提高
了代码的可维护性和可扩展型。

                该方式的缺点就是:父类引用不能直接调用子类独有的方法,若调用则
需要强制类型转换
        接口
            基本概念
                接口就是一种比抽象类还抽象的类,体现在所有方法都为抽象方法
                定义类的关键字是class,而定义接口的关键字是interface。
            类和接口之间的关系
            抽象类和接口的主要区别
                • 定义抽象类的关键字是abstract class,而定义接口的关键字是interface。
                • 继承抽象类的关键字是extends,而实现接口的关键字是implements。
                • 继承抽象类支持单继承,而实现接口支持多实现。
                • 抽象类中可以有构造方法,而接口中不可以有构造方法。
                • 抽象类中可以有成员变量,而接口中只可以有常量。
                • 抽象类中可以有成员方法,而接口中只可以有抽象方法。
                • 抽象类中增加方法时子类可以不用重写,而接口中增加方法时实现类需
                要重写(Java8以前的版本)。
                • 从Java8开始增加新特性,接口中允许出现非抽象方法和静态方法,但非
                抽象方法需要使用default关键字修饰。
                • 从Java9开始增加新特性,接口中允许出现私有方法
    异常
        NullPointerException 
            空指针异常
        IndexOutOfBoundsException 
            数组越界异常
        NumberFormatException 
            数组格式异常
        ClassCastException 
             类型转换异常 
        AirthmeticException 
            数学异常
        IllegalArgumentException
            非法参数异常
    注解
        注解的基本概念
            • 注解(Annotation)又叫标注,是从Java5开始增加的一种引用数据类型
            • 注解本质上就是代码中的特殊标记,通过这些标记可以在编译、类加载、
以及运行时执行指定的处理。
        注解的语法格式
            访问修饰符 @interface 注解名称 {
注解成员;
}
            自定义注解自动继承java.lang.annotation.Annotation接口
            • 通过@注解名称的方式可以修饰包、类、 成员方法、成员变量、构造方
法、参数、局部变量的声明等。
        元注解的概念
            元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但
是它能够应用到其它的注解上面。

                @Retention、
                    @Retention 应用到一个注解上用于说明该注解的的生命周期,取值如下:
• RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时
它将被丢弃忽视。
• RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加
载到 JVM 中,默认方式。
• RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载
进入到 JVM 中,所以在程序运行时可以获取到它们。
                @Documented
                    是否在文档中体现 使用javadoc工具可以从程序源代码中抽取类、方法、成员等注释形成一
个和源代码配套的API帮助文档,而该工具抽取时默认不包括注解内容。
• @Documented用于指定被该注解将被javadoc工具提取成文档。
• 定义为@Documented的注解必须设置Retention值为RUNTIME
                @Target、
                    目标 这个注解可以修饰那些内容
                @Inherited
                    @Inherited并不是说注解本身可以继承,而是说如果一个超类被该注解标
记过的注解进行注解时,如果子类没有被任何注解应用时,则子类就继
承超类的注解
                @Repeatable
                    是否可以重复
        常见的预制注解
            预制注解就是Java语言自身提供的注解
                预制注解就是Java语言自身提供的注解,具体如下:
                @author 标明开发该类模块的作者,多个作者之间使用,分割
                @version 标明该类模块的版本
                @see 参考转向,也就是相关主题
                @since 从哪个版本开始增加的
                @param 对方法中某参数的说明,如果没有参数就不能写
                @return 对方法返回值的说明,如果方法的返回值类型是void就
                不能写
                @exception 对方法可能抛出的异常进行说明
                @Override 限定重写父类方法, 该注解只能用于方法
                @Deprecated 用于表示所修饰的元素(类, 方法等)已过时
                @SuppressWarnings 抑制编译器警告

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据专家大神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值