回顾: 简述final修饰符功能
1 修饰类 该类不能被继承
2 修饰变量 该变量就是常量(初始化后无法被修改)
3 修饰方法 不能被重写
1 多态
面向对象三大特性之一。
1.1 定义
同一行为具有多个不同表现形式。
1.2 前提
继承父类或实现接口
1 父子类
2 重写
3 父类应用指向子对象
1.3 多态语法
Person per = new Student();
Person是Student的父类
1.4 多态注意事项
使用不了子类的独有内容。
名义上是父类的,就只能调用到父类中存在的,如果子类有重写,可以调用到子类的重写方法,如果没有重写就是调用父类的。
多态只能调用父类内容。
成员变量:
子类独有的访问不到,如果有重名属性,则变量看类型,方法看对象。
1.5 多态的用途
a 多态参数
b 多态数组 -> 对象数组的升级
2 父子类之间的类型转换
2.1 自动转换(向上转型 多态)小->大
2.2 强制转换(向下转型) 大->小
因为多态,调用不了子类独有内容,但是可以强转(不建议)
语法:
子类类型 对象名 = (子类类型)父类引用;
强转之前要做判断!
instanceof 判断前面对象是否属于后面类型
例子: person(对象名) instanceof Person(类名)
2.3 属性与静态方法是没有堕胎的
3 native 本地的,原生的
3.1 不能和abstract一起使用的修饰符
a final: final 和final一起无法修饰方法与类
b static: 和static无法一起修饰方法
c native: 和native无法一起修饰方法
d private: 和private无法一起修饰方法
3.2 static和final一起使用
a 修饰方法: 可以均不能被重写
b 修饰成员变量: 可以,表示静态常量
c 修饰局部变量: 不可以,static不能修饰局部变量
d 修饰代码块: 不可以,final不能修改代码块
e 修饰内部类: 可以一起修饰成员内部类,不能一起修饰局部内部类
4. Object 根父类
默认是根父类,该类中所有方法都可以供任意对象继承
a toString()
b class getClass()反射位置,会遇到此方法
功能:返回对象运行时类型,类加载的时候会创建Class对象
c hashCode()
将当前对象,通过hash算法,得到一个int值,
将两个相同对象向,经过相同hash算法,得到的值肯定是一样的
将两个不同对象,讲过相同的hash算法,得到的int值大概率不同,有可能相同
d finalize()
java存在垃圾回收机制(自动的机制)
java中什么样的对象,会被人为是垃圾?-----没有引用的对象
java中被认为是垃圾的对象,什么时候会被垃圾回收机制回收?---------不定时回收
垃圾对象被回收时,会默认调用该对象的finalize()方法。
System.gc();通知垃圾回收机制来回收垃圾
e equals()(判断两个对象是否一致)
== 主要判断两个地址是否一致。
5 接口
接口–>定义规则
5.1 接口的语法
【修饰符】 interface 接口名{} //类似于类的语法
5.2 分类
JDK 1.8之前
a 接口中所有成员变量默认公有的静态常量(不允许修改)
b 接口所有成员方法默认公有的抽象方法
c 接口中无构造器
d 没有初始化块
JDK 1.8之后
默认方法和静态方法
5.3 特点
a 接口不能实例化对象
b 只能作为父级别
子类继承父类
实现类实现父接口
c 实现类实现父接口,并实现父接口中所有的抽象方法
public class Air implements Fly {抽象方法实现}
d 如果类有父接口,还可以有父类(只能在实现后面 例子:class Air extends Att implements Fly)
类只能有一个父类,可以有多个父接口
5.4 关系
a 类与类之间:单继承
b 类与接口之间:多实现
c 接口与接口之间:多继承