继承概念
class Items{
Sting music;
}
class DVD extends Items{
}
在这个类的声明中,DVD是子类,Items是父类。DVD作为子类会继承父类中的函数和变量。
父类与子类的关系
还有一种特殊的标识:final
被标识为final
的类无法被继承,是继承树的末端,被标识为final的成员不能被覆盖重写
在父类中被定义为private的变量和函数只有父类自己可以使用,子类不能引用
protected 修饰的函数和变量可以被同一个类或是同一个包内的类,还有不同包内的子类访问
多态变量和向上造型
多态可以理解为:子类对象可以被当做父类对象来使用
Java的对象变量是多态的,可以是声明类型(静态),或者是声明类型的子类(动态)。
当把子类对象赋值给父类时就发生了向上造型。Java允许向上造型,但不允许向下造型。
在造型过程中,变量的类型不会转换,但是编译器会把它当做造型后的变量处理,这一点是与类型转换不同的。
函数调用的绑定:
当通过对象变量调用函数的时候,调用哪个函数这个事情叫做绑定。绑定分两种:
静态绑定:根据对象的声明类型来决定
动态绑定:根据对象的动态类型来决定(Java默认绑定方式)
类型系统
Java中所有类都实际继承自Object。
关于override在代码中的作用:
@Override是伪代码,表示重写。(当然不写@Override也可以),不过写上有如下好处:
1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。