1、 他 可以用来区分子类和父类具有相同变量名的,可以用super来区分 super也可以调用父类被重写的方法 构造方法是不能够被继承的,如果想使用父类的构造方法来帮助我们完成一些事情 我们可以通过super来调用相应的构造方法,每个构造方法上面其实都有一句super()
2、 不写也有,简单来说,在构建子类对象的时候,子类会先调用父类的构造方法 如果父类中添加了有参构造器,但是也没有手动添加无参构造器 那么子类的构造器就会报错,引用子类中的每一个构造器都会默认 调用父类的无参构造器,除非你通过super关键字来进行显示的调用 父类的相应的有参构造器;
3、 super关键字在子类的构造器中调用相应的构造器,那么也必须写在第一行 this 和 super 能同时存在吗? 不能
4、 向上造型 简单来说就难受使用 父类的引用指向子类的对象 动物 animal = new 狗();狗是动物 Animal a = new Dog(); 在使用向上造型时需要注意: ***************** 编译期和运行期
5、 编译期看类型 Animal a= new Cat(); 在编译期烂瘀佐栾这个a是动物,动物只能吃不会抓老鼠,所以a是不能够赶时縻橼直接调用抓老鼠的 需要我们强行转换 运行期 看对象 Animal cat=new Cat(); Dog dog=(dog) cat; 上面代码只能够在编译期没有问题,因为编译期看类型dog看做了狗类型 可以调用看大门,但是运行期看对象,实际上这只狗看门的时候发现他不是一条真正的狗 而是一直披着狗皮的猫,所以他看大门的时候出错了。
6、 ***************************** 强制思凳框酣转换有风险,所以强制转换之前最好要判断一下 判断该引用指向的对象是否是转换之后的对象 如何判断?java给我们提供了一邗锒凳审个instanceof 关键字,我们可以使用该关键字 来进行判断,查看引用所指向的对象是不是我们想转的类型,如果是 则返回true 不是则返回false。。