都可访问成员变量
this 既可以访问父类的成员变量也可以访问子类的成员变量,优先访问子类的成员变量
super 只能访问父类的成员变量
都可以访问成员方法
this 可以访问父类的的成员方法和子类的成员方法,优先访问子类的成员方法
super 只能访问父类的成员方法
都可以访问构造方法
this() 用于访问子类中的构造方法
super() 用于访问父类中的构造方法
注: 继承中的构造方法
子类在创建对象的时候首先会创建父类的对象,即子类在调用构造方法的时候后优先调用父类的构造方法
如果父类有无参构造方法,子类的构造方法就不需要显示调用,会自动调用父类的无参构造方法
如果父类没有无参构造方法,那么子类的构造方法第一句必须是显示调用父类的有参构造方法
//定义A类
class A{
public void show(){
System.out.print("A");
}
}
//定义B类继承A类重写show方法
class B extends A{
public void show(){
System.out.print("B");
}
}
//测试类
class test{
public static void main(String[] args){
//A类的引用指向B类的对象,即多态
A a=new B()
//调用多态方法
a.show();
//这里打印的是B,多态方法中子类有父类也有的情况下,就调用子类的方法
}
}
多态的类型转换
自动向上转型: 将子类对象赋值给父类引用,可以自动进行,自动提升子类对象的类型
如 A a=new B();就是把B对象的类型自动转成了A对象的类型
强制向下转型: 将父类引用转为子类引用,需要进行强制类型转换
B b=(B)a;这里将A类型的引用转换为B类型就需要强转
注:
只有发生了向上转型的情况,才能向下转型