多态:
最近回顾的一个知识点,个人总结理解为:
- 简单来说,就是可以让一个对象的方法具有多种表现形式,比如a对象的a1方法,在多态的效果下,可以在不同的情况下执行不同的业务逻辑。
- 一般,我们创建对象的格式都是为:(对象类型 对象名=new 对象类型();) 但是,在继承中,new一个作为子类的对象时,接收类型可以不必是子类自己,还可以是他的父类,也就是:(父类 对象名=new 子类(); ),那么,在这个格式下,当该对象调用父子均实现了的方法时,会执行谁的方法呢?
- 答案是子类的,因为Java在调用方法时,是基于对象的实际类型来进行动态调用的,与对象的接收时类型无关。在这种前提下,就可以通过改变new的子类的不同(父类可以被多个子类继承),来让类型相同,但业务逻辑却不同,即多态。个人估计,多态的效果,主要还是提高代码复用性
- 通过以上几点,我们可以直接推导出多态的前提:子类继承父类,子类重写父类方法,最后new子类对象,用父类接收。另外,创建出来的这个父类类型的对象,是无法调用子类自己多出来的方法的,也就是该对象只能调用父类的方法,但执行的却是子类的对应方法
String类型:
最近稍微回顾一下的知识点:
- String是一个对象,数据存储在堆内存,存储的是一个地址值
- String的+号拼接的内部原理:隐式生成一个StringBuilder对象,使用append方法进行拼接,之后使用toString返回
- String的常量拼接,如果内存中存在相同内容的字符串,则会指向那个相同内容的字符串,而如果是变量拼接,则生成一个新的地址值
溜了~会慢慢提高效率