Java第十四次笔记(强化部分Day03)---多态、内部类、常用API(Object、Objects、StringBuidder、Math、System、BigDecimal)

目录

一、面向对象三大特征之三:多态

1.1多态的概念,多态的形式

什么是多态?

多态的常见形式:

多态中成员访问特点: 

多态的前提: 

1.2多态的优势 

多态下会产生一个问题: 

1.3多态下的引用数据类型的类型转换 113

使用instanceof进行强制类型判断:

 总结:

 1.2多态的案例

案例: 

 二、内部类

2.1内部类概述 114

 2.2内部类之一:静态内部类(了解)115

什么是静态内部类?

静态内部类创建对象的格式: 

静态内部类的访问拓展:

 总结:

2.3成员内部类 115

什么是成员内部类?

 成员内部类创建对象的格式:

成员内部类的访问拓展: 

总结:

 案例:

​编辑 2.4局部内部类(了解知道即可,比较鸡肋)115

2.5匿名内部类概述(重点) 116

匿名内部类的特点总结:

 总结:​编辑

 疑问?匿名内部类会不会产生class文件呢?

2.6匿名内部类常见使用形式 (使用语法)116

2.7匿名内部类真实使用场景演示 116

可视化窗口的创建程序:

三、常用API 117

API的含义概念:

 3.1Object 117

Object的toString方法: 

快速将子类内容进行重写的方法:

总结1:

 Object的equals方法: 

总结2: 

3.2Objects 117

 总结:

 3.3StringBuilder 118

​编辑 StringBuilder的注意:

为何StringBuilder的拼接效率高: 

 总结:

StringBuilder案例: 

3.4Math 119 

 3.5System类 119

为何计算机的起点时间为1970年1月1日?

 3.6BigDecimal类 119

 BigDecimal类作用:

 BigDecimal类的使用步骤:

BigDecimal类是需要一定的精度的要求:

 总结:


一、面向对象三大特征之三:多态

多态是最重要的面对对象的特征!!!

1.1多态的概念,多态的形式

什么是多态?

举例说明:狗和乌龟,两者都是同类对象。同时执行相同行为:比如说跑。狗和乌龟的跑步行为不一样。这就是多态的变现。

多态的常见形式:

接口:可以理解为是“干爹”之意。

形式理解:小范围的变量在大范围的变量内,所以形式合理。

多态中成员访问特点: 

 方法调用的解释:

a.run():编译看的是左边的动物,但是执行的话还是运行的右边子类中的方法内容。

a.name:变量的输出,编译和运行都看的是左侧父类中的内容,所以输出的运行结果是父类中的内容。

多态的前提: 

这点很重要!!!!! 

1.2多态的优势 

解耦合:互相依赖不是那么强。

后面是乌龟,可以直接将乌龟直接修改为其他存在与父类Animal存在父子关系的其他的子类,比如说狗。如下所示: 

 

 案例如下:定义一个跑的方法,将动物这个父类传递给方法中,在主函数中年可以调用父类中所有子类的对象。

多态下会产生一个问题: 

解释:由于编译的时候看的是左侧的内容,是考虑的是左侧父类的内容,父类是不包含子类的独有功能内容的,所有不能使用子类的独有功能。

1.3多态下的引用数据类型的类型转换 113

 父类转子类:自动转换

子类转父类:就是子类中的方法,父类中没有,会报错,但是可以使用强制类型转换来进行。

比如:本案例中,父类Animal没有子类乌龟的下蛋方法,所有可以使用强制类型转换,让本属于乌龟下蛋的行为(方法)进行操作。

 强制类型转换:

 

使用instanceof进行强制类型判断:

 总结:

 1.2多态的案例

案例: 

代码看工程文件。 

 二、内部类

2.1内部类概述 114

 2.2内部类之一:静态内部类(了解)115

什么是静态内部类?

静态内部类创建对象的格式: 

静态内部类的访问拓展:

对拓展的2进行补充说明: 

 总结:

2.3成员内部类 115

什么是成员内部类?

 成员内部类创建对象的格式:

使用的解释:

首先是通过new Outer()创建新的空间,在这个空间里面找到了新的方法,寄生在外部的类中。

先用外部类的构造器,在堆内存中开辟一片空间,再用内部类的构造器在刚刚外部类构造器开辟的空间里开辟空间。

注意:内部的静态方法的调用形式:

成员内部类的访问拓展: 

总结:

 

 案例:

 

 2.4局部内部类(了解知道即可,比较鸡肋)115

 

2.5匿名内部类概述(重点) 116

 

 

匿名内部类的特点总结:

 总结:

 疑问?匿名内部类会不会产生class文件呢?

在工程中的out文件夹下会有显示。 

 

2.6匿名内部类常见使用形式 (使用语法)116

作为一个方法的入参。

 其中的s2被匿名类为方法       被当作是参数的输入。

 代码查看工程文件。

 理解:把接口类型通过匿名内部类实例化的子类对象  作为参数传给别的方法  别的方法又通过子类对象回调

2.7匿名内部类真实使用场景演示 116

可视化窗口的创建程序:

三、常用API 117

API的含义概念:

 3.1Object 117

Object的toString方法: 

 

快速将子类内容进行重写的方法:

方法一:自己编写。

方法二:使用快速生成:

方法三 :

输入tos后进行回车操作自动生成。

总结1:

 Object的equals方法: 

 

总结2: 

3.2Objects 117

 总结:

 3.3StringBuilder 118

 

 StringBuilder的注意:

StringBuilder是字符串的拼接,拼接的效率好。

为何StringBuilder的拼接效率高: 

1、String类拼接字符串原理图 

 

解释:

一个加号,堆内存中俩对象:首先是new出来在堆内存当中001,由于是String类型的,所以还需要做进一步的转换,转换为另外的一个对象002。所以说是一个加号,堆内存出俩对象。

2、StringBuilder提高效率原理图 

 

只产生一个对象。

总结:相比之下StringBuilder只产生一个对象。所以提高了拼接的效率。

 总结:

StringBuilder案例: 

3.4Math 119 

就是调用的相关的数据,进行数学的计算等。

 解释说明,如何利用random生成0-6之间的随机数

 3.5System类 119

解释:

1、终止程序的运行

2、单纯的输出这个时间是记录的1970年1月1日的时间

PS:可以使用该语句进行代码的时间的计算。

为何计算机的起点时间为1970年1月1日?

3、进行数组的拷贝 

数组拷贝: 

 3.6BigDecimal类 119

 BigDecimal类作用:

解决运算进行时候的精度失真的情况发生。

 BigDecimal类的使用步骤:

注:调用方法使用BigDecimal类是最好的方式。精致使用构造器来使用BigDecimal类

 代码展示:

BigDecimal类是需要一定的精度的要求:

解决报错问题:

 总结:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值