在类的继承中可以继承父类中的pubic、protected类型的states与method
1、子类可以使用父类中的变量
2、可以定义与分离中相同的变量,隐藏父类的类型。
3、也可以定义新的变量
4、子类中可以继承父类的实例化methed
5、子类中可以重新定义与父类同样的实例化method,覆盖掉父类的method
6、对静态method,可以重新定义用于隐藏掉父类的method
7、可以重新定义method
Ps:继承的时候,不能改变缩小访问类型,可以扩大访问类型。另外静态变量域非静态之间不能相关转化。
类可以向父类转换,你向是不可行的。可以采用isinstance检测是否是子类,进行类型检测。转换时可以的,但是在调用函数的时候会报编译错误,寻找不到相应的函数。
java不支持类的多重继承,原因主要是多个父类的state没有不容易管理,与初始化。允许实施多个接口,接口中不会存在states。
1、当父类的中的非静态函数,与接口的中的default函数与abstract函数相同的时候,接口中的函数会覆盖掉。
2、接口中存在覆盖函数时,以覆盖函数为准
3、当接口中的函数为不相关的时候,函数相同的时候会报错,解决方法为覆盖相关函数,在函数中调用需要的函数,调用方法为:
FlyCar.super.startEngine(key); OperateCar.super.startEngine(key)
多态性:
子类具有父类的一些特种,所以具有共性,但是共性之中具有多态性。
super:
1、调用被覆盖的函数
2、调用被隐藏的函数
3、调用super()函数,父类的构造函数,卸载构造函数的开始位置。如果没有显示的调用super函数,系统会自动的隐式调用。所有的类都是从object中继承出来的。
Object类介绍:
考虑到所有类都是直接或者间接从Object类中继承的,在Object中有一些通用的函数。Object类在java.lang中有定义比价通用的函数:
1、复制函数,类必须实施Cloneable
interface接口,否则会有异常。当类中有对边引用变量的时候,所复制的类非独立的。如果这样的需要重载覆盖。
protected Object clone() throws CloneNotSupportedException
2、相等,是说两个引用是否相等,相当于操作符号==。当为基础数据类型的时候,比较的是他们的值
public boolean equals(Object obj)
当对它进行覆盖是,需要重新hancode
3、protected void finalize() throws Throwable
在垃圾收回时调用的函数,主要不要特别依赖这个函数,不一定调用到。-----原因未知
4、public final Class getClass()
返回class对象。class对象包含很多函数,相当于class文件。getSimpleName();getSuperclass();getInterfaces();isAnnotation();isInterface();isEnum();getFields();getMethods()
5、public int hashCode()代表函数的地址
6、public String toString()字符输出对象