向上转型的本质是子类可以调用父类属性,
向下转型的本质是父类可以调用子类属性,但存在安全隐患,是吗?
向上转型(Upcasting)是指将子类对象赋值给父类引用变量的过程。这种转型是安全的,因为子类对象继承了父类的属性和方法,所以可以通过父类引用变量来访问子类对象的属性和方法。向上转型的本质是实现了多态性,即通过父类引用变量可以调用子类对象的方法。
向下转型(Downcasting)是指将父类引用变量转换为子类引用变量的过程。这种转型是有风险的,因为父类引用变量可能指向的是实际上是子类对象,但在编译时被声明为父类类型。如果进行向下转型时,如果父类引用变量指向的对象不是子类对象,而是其他类型的对象,那么在运行时会抛出ClassCastException异常。因此,在进行向下转型时,需要先使用instanceof运算符进行类型检查,以确保转型的安全性。
【相关推荐】
哪怕当父类和子类在同一个包中的时候,子类访问不到父类的私有属性和私有方法。
如果想调用,可以父类提供间接访问的方法,比如set
和get
方法,或者其他方法折中调用等等,下面的代码加入到父类中可以间接的访问私有的属性和方法(我不能做的事情,可以叫别人帮忙做)。
public int getN4() {
return n4;
}
public void getTest04() {
test04();
}
而通过debug工具,可以发现私有属性n4
被被子类Sub继承了,所以子类继承了所有父类的属性和方法,包括私有的属性和方法。