笔记11

                                Java基础——Day11

回顾

1. final

①修饰变量:就是常量,比如PI

②修饰方法:不允许子类重写,只让你调用。【你认为这个方法已经写的Perfect了】

③修饰类:你这个类已经很完善了或者你自己一个类似JDK的工具集/框架,此时就可以将其定义为 final

2. static

①修饰变量:类变量,通过类名调用,用于共享数据【每个对象操作后,别的对象拿到的都是最新 值;而不是自己跟自己玩】,一般我们会结合final一起使用,定义全局常量

②修饰方法:一般是放在工具类中。好处就是通过类名调用,即使调用n次,也无需创建n个对象 去调用,就不需要频繁的GC,同时也节省了我们堆内存空间。

③修饰代码块:静态代码块,具体使用我们在讲到JDBC的时候,我们去初始化连接信息的时候会 用到

知道跟普通代码块、构造方法执行的先后顺序

3. Object

① toString() :直接输出对象名 跟 对象名.toString() 没有区别,你用 对象名.toString() 多余

② equals() :自定义比较规则,比如String,比较是内容而不是地址值,因为它重写了 equals equals vs ===

③ hashCode :你就把当做是在内存中的某个位置,一般我们在重写equals的同时还要重写 hashCode

④ getClass :间接通过这个,拿到全类名,以及简单类名

多态

1.1 为什么要用

宠物乐园为例,我们为宠物喂食,我们新增了一个主人类,添加了一个 feed 方法,根据我们前面的知 识,我们可以在 Master 类中,编写多个重载的方法。但是发现,若新增了一个宠物类,我们又需要添 加一个重载方法,在 Master 这个类中, feed 方法的可维护性和扩展性不太好。同时我们发现,我们的 形参都是Pet的子类,能否使用父类作为形参传递呢? ----》Java给我们提供了一种机制,我们称之为多 态。

好处:可以提高代码的扩展性和维护性。

1.2 什么是多态

1.2.1 生活中多态

生活中的多态就是一个实体【对象】在不同场景下的形态【身份】

帅哥:兄弟

路上:路人甲

1.2.2 程序中的多态

父类引用指向子类对象 Pet pet = new Dog(); 声明看左边,运行看右边;而且使用的时候,调用是子类重写之后的方法,而不是父类继承过来的 方法,虚方法调用。

1.2.3 前提

1. 继承或者实现关系

2. 继承过来的方法,在多态场景下,不重写的话,其实是没啥意义的。

1.2.4 向上转型

多态,即父类引用指向子类对象

Pet pet = new Dog();

1.2.5 向下转型

就是我们前面的强转:大类型转为小类型,只不过前面我们用的基本类型转换,这里用的是引用类 型,换了一个新的概念而已。

多态的弊端:子类特有的东西调用不到,需要将其还原到本质【子类类型】

注意:在向下转型的过程中,为了避免类型转换的问题 ClassCastException ,使用 instanceof 做判断 之后,在进行转换

1.3 应用场景

1. 使用父类作为方法的形参,在调用方法的时候,使用多态机制。

2. 使用父类作为返回值类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值