面向对象-内部类-枚举-泛型-API

1、内部类:概述、成员内部类

内部类:内部类是类中的一个成员,

创建方法:外部类.内部类 对象名= new 外部类(...).new 内部类(...);

成员内部类的实例方法的特点:可以直接访问外部类的所有成员;可以拿到当前外部类对象, 外部类.this

2、内部类:静态内部类[了解]

static 修饰的内部类:属于外部类自己特有

它的成员可以是静态的,它只能访问外部类中的静态成员。

3、内部类:匿名内部类[重点]

没有名字的类 :直接 new 出来的

new 类或接口(参数值...){ 类体(一般是方法重写);}

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

作用:更方便的创建一个子类对象

用途:Thread 中直接 new 一个子线程并且重写方法

4、内部类:匿名内部类的使用场景

匿名内部类在开发中通常作为一个参数传输给方法

5、枚举:认识枚举

枚举类的第一行只能写一些名称,每个名称本质是常量,每个常量都会记住枚举类的一个对象

枚举类的构造器都是私有的,枚举类对外不能创建对象

枚举中,从第二行开始,可以定义类的其他成员

valueOf : 将字符串名称转换为枚举对象

主要用于在与web端交互中

枚举也可以创建单例对象 实现单例设计模式

6、枚举:枚举的作用

可以有效的控制传入数据的合法性,用switch分支类型判别如何返回相应的值

7、泛型:认识泛型

定义类,接口,方法时,同时声明一个或多个类型的变量

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

泛型本质上是一个类型变量,可以指定具体操作的数据类型。(基本数据 -> 包装类)

作用:泛型可以在编译阶段去检查数据的类型是否合法,可以避免不必要的类型强制转换及类型的强转异常。

8、泛型:泛型类

修饰方法:修饰符 class 类名<类型变量,类型变量,...> {}

类型变量:E,T,K,V

9、泛型:泛型接口

如何定义泛型接口 : interface 接口名<T>

10、泛型:泛型方法

如何定义泛型方法:修饰符 <T> 返回值 方法名(T t){}

注意 如果返回值类型是泛型 不是泛型方法

11、泛型:泛型的注意事项

泛型的擦除问题:泛型的工作在编译阶段的,在反射阶段有讲解一旦程序编译成class文件,class文件中就不存在泛型了,这就是泛型擦除。

泛型不支持基本数据类型,只能支持对象(应用数据类型)

12、API课程介绍

13、API:Object类的toString、equals方法

14、API-Object的克隆方法

继承cloneable需要一定重写clone()

默认clone是protected 的只能在本类和子类中使用,而且返回值类型是Object的需要强转

通过clone后可以将权限变成public 而且 可以返回当前类的类型,而不是Object类型,方便使用

深克隆

对象中的基本类型的数据直接拷贝

对象中的字符串数据拷贝的还是地址

对象中包含的其他对象,不会拷贝地址,会创建新对象

浅克隆

拷贝出的新对象,与原对象中的数据一摸一样(引用类型拷贝的只是地址)

如何克隆

类实现Cloneable接口,重写克隆方法

如果要深克隆,就需要将对象内部的引用类型数据再次克隆

对User对象中的非字符串,非基本类型数据再次做克隆

数组的clone()方法 是 浅克隆,是不能改变的

native :native标识的是调用java底层的方法栈的c或c++代码

对象的创建有3种 :new ; clone() ;反射

15、API-Objects类

工具类:

Objects.equals(a,b) :自动进行非空判断的对比

Objects.isNull() : 是否为空

Objects.nonNull(): 是否不为空

16、API-包装类

自动装箱和自动拆箱 (valueOf)

基本数据类型 -> 字符串类型

toString()

直接拼接一个空串 i + ""

字符串类型 -> 基本数据类型

valueOf / parseXxx(8种包装类型中 除了Character 类型)

泛型和通配符

E,T,K,V:主要用于第一种,声明泛型类或泛型方法,

无界通配符?:主要用于第二种,使用泛型类或者是泛型方法,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值