Day11 面向对象进阶(三)——内部类,枚举,泛型

Class1 内部类

        1.def:是类中的五大成分之一(成员变量,方法,构造器,内部类,代码块),如果一个类定义在另一个类的内部,这个类就是内部类

        2.应用:当一个类的内部,包含了一个完整的事物,且这个事物没有必要单独设计时,就可以把这个事物设计成内部类。

public class phone{
    // 内部类
     class card{
    }
}

  class1.1成员内部类

        1.def:就是类中的一个普通成员,类似与普通的成员变量,成员方法

        2.创建内部类对象格式:外部类名.内部类名 对象名 = new 外部类(...).new 内部类(...);

        3.成员内部类中访问其他成员的特点:

              ①成员内部类内部不允许存在任何static变量或方法(可以用public static final来定义常量)

              ②成员内部类的实例方法中,可以直解直接访问外部类的成员变量

              ③可以在成员内部类的实例方法中,拿到当前外部类对象,格式是:外部类名.this

  class1.2 静态内部类 

        1.def:有static修饰的内部类,属于外部类自己持有

        2.创建静态内部类对象格式:外部类名.内部类名 对象名 = new 外部类.内部类(…)

        3.note:可以直接访问外部类的静态成员,不可以直接访问实例成员

  class1.3 局部内部类(了解)

        1.def:局部内部类是定义在在方法中、代码块中、构造器等执行体中

  class1.4 匿名内部类

        1.def:匿名内部类是 Java 编程语言中一种特殊的类,它没有显式地定义类名,而是在创建对象时通过传递实现了某个接口或继承了某个类的代码块来定义类。通常,我们使用它来简化代码、减少类的数量和更高效地编写事件处理程序等。

        2.格式:这才是匿名内部类格式,且可以接对象

        3.特点:匿名内部类本质就是一个子类,并会立即创建出一个子类对象

        4.作用:①更方便的创建出一个子类对象②匿名内部类通常作为一个参数传输给方法

Class2 枚举 

        class2.1 枚举的概述

              1.def:本质上是一种特殊类,成员变量,成员方法都可以有

              2.格式:

              3.note:①枚举类中的第一行,只能写一些合法的标识符(名称),多个名称用逗号隔开

                           ②这些名称。本质上是常量,每个常量都会记住枚举类的一个对象

              4.枚举类的特点:

                       ①枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都                            是枚举类的一个对象

                ② 枚举类的 构造器都是私有的 (写不写都只能是私有的),因此, 枚举 对外不能                     创建对象。
                ③ 枚举都是最终类,不可以被继承
                ④ 枚举类中,从第二行开始,可以定义类的其他各种成员。
                ⑤ 编译器为枚举类新增了几个方法,并且 枚举类都是继承:java.lang.Enum 类的,                        从 enum 类也会继承到一些方法。
       
        5.使用: 用来表示一组信息,然后作为参数进行传输。
                ·  选择定义一个一个的 常量 来表示一组信息,并作为参数传输:参数值不受约束

                      · 选择定义枚举表示一组信息,并作为参数传输:代码可读性好 

Class3 泛型 

  class3.1 泛型基础

        1.def:l 定义类、接口、方法时,同时声明了一个或者多个类型变量(如:<E> ,称为泛型类、泛型接口,泛型方法、它们统称为泛型。

        2.作用:泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力,这样可以避免强制类型转换,及其可能出现的异常。

        3. 泛型的本质:把具体的数据类型作为参数传给类型变量

class3.2 泛型类 

 class3.3 泛型接口

 

class3.3 泛型方法

1.格式:修饰符 <类型变量,类型变量,…>  返回值类型 方法名(形参列表) { ...}

2.通配符:就是 “? 可以在“使用泛型”的时候代表一切类型

            note:①<?extends Car> :?能接收的是Car或是Car的子类

             ②<? super Car>:?能接收的是Car或是Car的父类

class3.4泛型的注意事项 

①泛型是工作在编译阶段的,一旦程序编译成 class 文件, class 文件中就不存在泛型了,这就      是泛型擦除。
②泛型不支持基本数据类型,只能支持对象类型(引用数据类型)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值