关键字super
1)super,相较于关键字this,可以修饰属性、方法、构造器
2)super修饰属性、方法:在子类的方法、构造器中,通过super.属性或者super.方法的形式,显式的调用父类的指定属性或方法。尤其是,当子类与父类有同名的属性、或方法时,调用父类中的结构的话,一定要用“super.”
3)通过“super(形参列表)”,显式的在子类的构造器中,调用父类指定的构造器!
任何一个类(除Object类)的构造器的首行,要么显式的调用本类中重载的其它的构造器“this(形参列表)”或显式的调用父类中指定的构造器“super(形参列表)”,要么默认的调用父类空参的构造器"super()"
建议在设计类时,提供一个空参的构造器!否则会报错
多态性
1)多态性的表现:①方法的重载与重写 ②子类对象的多态性
2)使用的前提:①要有继承关系 ②要有方法的重写
3)格式:
<code>Person p = new Man();//向上转型</code>
虚拟方法调用:通过父类的引用指向子类的对象实体,当调用方法时,实际执行的是子类重写父类的方法
4)编译时,认为p是Person类型的,故只能执行Person里才有的结构,即Man里特有的结构不能够调用(解决:使用abstract方法)
子类对象的多态性,并不使用于属性。
5)关于向下转型:①向下转型,使用强转符:()②为了保证不报ClassCastException,最好在向下转型前,进行判断
<code>
if (p1 instanceof Woman) {
System.out.println("hello!");
Woman w1 = (Woman) p1;
w1.shopping();}
</code>