Everything is an Object; 一切皆对象
Object类是类层次结构的根类,一切包括数组都直接或间接的来继承Object类
final 关键字可以修饰类,可以修饰属性,可以修饰方法;
final 修饰的属性,值不能够发生改变
final 修饰的方法,不能够再被子类重写(覆盖);
关于继承的三点:
父类有子类的都有
父类没有的子类可以增加
父类原有的子类可以改变
父类的空参构造
父类的空参构造不能够省略不写,因为如果子类的构造方法中没有写super(参数),那么子类的构造方法中会默认写入
super(),也就是默认去调用父类的空参构造
重点:构造方法不能够被继承....只能被调用
在一个类中不管哪个构造方法被执行,都会先去调用父类的构造方法,就像现实中没有父亲就没有孩子一样.
super();调用父类的构造方法,只能写在本构造方法中的第一行,也就是说,再此之前不能够有课执行的代码.
startic 代码块,在java编译器编译的时候就首先编译好,在执行的时候最先执行,而且从始至终只执行一次.
构造方法在调用的时候才会去执行,并且是调用几次执行几次,
多态
多态:
按照字面意思理解就是"多种样式",就好像我们现实生活中的对象在不同的时候具有不同的身份特征.
多态性是允许你将父类对象设置成为一个或更多的它的子类对象相等的技术,赋值之后,父类对象就可以根据当前赋值给它的子类对象的特性以不同的方式运作....
没有继承就没有多态
在多态中有两种类型转换方式:
上转型对象:隐式的 安全的行为
下转型对象:显示的 不安全的行为
为什么需要使用上转型:在抽象类和接口中体现出多态的特性
为什么需要使用向下转型:是对象可以调用到自身特有的方法.
父类声明指向子类对象,这就是上转型对象.(上转型对象,也叫作向上造型,这是一种安全的行为)
子类构造的对象赋值给父类声明的引用
这就是多态
上转型对象不能够调用子类特有的方法
他的执行过程是:
先去父类中查看是否有play()这个方法
如果父类中没有这个方法,则编译报错
如果父类中有这个方法,则去子类中调用执行
下转型对象(也叫作向下造型),把父类声明子类的对象转变为它自身声明对象
这是一种显示的行为'不是安全的行为
编译的时候没有问题,执行的使用会报出classcastException:类转换异常
因为向下造型是一种不安全行为.