一、多态
1、定义:某一类事物的多种存在形态。(继承是多态的实现基础)
2、程序中体现:父类或者接口的引用指向或者接收自己的子类对象。
3、好处和作用:多态的存在提高了程序的扩展性和后期可维护性。
4、多态的弊端:当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类中具备的方法,不可以访问子
类中特有的方法。
5、前提:需要存在继承或者实现关系,要有覆盖操作。
6、多态的特点:
1)成员函数:编译时:要查看引用变量所属的类中是否有所调用的成员。在运行时:要查看对象所属的类中是否有
所调用的成员。
2)成员变量:只看引用变量所属的类。
3)静态函数:编译时期:参考的是引用型变量所属的类中是否有调用的成员。运行时期:也是参考引用型变量所属
的类中是否有调用的成员。
二、引用类型转换
1、向上类型转换(隐式/自动类型转换),是小类型到大类型的转换
2、向下类型转换(强制类型转换),是大类型到小类型的转换
3、instanceof运算符,避免类型转换的安全性问题
三、Object类
1、所有类的直接或者间接父类,Java认为所有的对象都具备一些基本的共性内容,这些内容可以不断的向上抽取,
最终就抽取到了一个最顶层的类中的,该类中定义的就是所有对象都具备的功能。
2、Object类中的方法,适合所有子类。
3、方法:
1,boolean equals(Object obj):用于比较两个对象是否相等,其实内部比较的就是两个对象地址。而根据对象的属
性不同,判断对象是否相同的具体内容也不一样。所以在定义类时,一般都会复写equals方法,建立本类特有的判断
对象是否相同的依据。
2,String toString():将对象变成字符串;默认返回的格式:类名@哈希值 = getClass().getName() + '@' + Integer.toHexString(hashCode())。为了对象对应的字符串内容有意义,可以通过
复写,建立该类对象自己特有的字符串表现形式。
3,Class getClass():获取任意对象运行时的所属字节码文件对象。
4,int hashCode():返回该对象的哈希码值。支持此方法是为了提高哈希表的性能。
四、内部类
1、将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)。
2、访问特点:内部类可以直接访问外部类中的成员,包括私有成员;而外部类要访问内部类中的成员必须要建立内
部类的对象。
3、定义内部类的原因:类是用于描述事物的,而事物中如果还有具体的事物,而且这个内部的事物在访问着所属事
物中的内容。这时这个内部的事物,也需要用到类来描述。这个类就是内部类。
五、匿名内部类
1、就是内部类的简化写法。就是建立一个带内容的外部类或者接口的子类匿名对象。
2、前提:内部类可以继承或实现一个外部类或者接口。
3、格式为:new 外部类名或者接口名(){覆盖类或者接口中的代码,(也可以自定义内容。)}
4、匿名内部类使用场景:当接口类型参数,该接口中方法不超过3个,可以使用匿名内部类作为函数的参数进行传
递,这样简化了书写。但是接口方法较多时,不要使用匿名内部类。影响阅读性。