展开全部
可以相互转换。
子类转成超类是向上转换。反之,则是向下转换。我们先用基础类型说明向上/向下转换:
将一个整数类型转换为一个float或double类型的转换方式被视作向上转换,这种转换是隐式的、自动的、安全的。例如:
int i = 10;
float f = i;
double b = i;
将一个float或double类型转换为一个int类型的转换方式被视作向下转换,这种转型可能会丢失数据。例如:
float f= 10.012f;
int i = (int)f;
超类和子类的相互转换:
将子类对象看作是超类对象,特定对象被当作一般对象去使用,这叫做向上转换。这种向上转换是隐式的、自动的、安全的。比如:已知Car类是超类,BMW类是Car类的子类,则在Car类与BMW类之间可以进行这样的向上转换:
Car car = new BMW();
将超类对象看作是子类对象,当作特定对象去使用,这叫做向下转换。这种向下转换是不安全的。比如:已知Car类是超类,BMW类是Car类的子类,在Car类与BMW类之间可以进行这样的向下转换:
Car car = new BMW();
BMW bmw = (BMW)car;
关于这类问题,我在秒秒学有看到详细的解说,你可以看看。
子类转成超类是向上转换。反之,则是向下转换。我们先用基础类型说明向上/向下转换:
将一个整数类型转换为一个float或double类型的转换方式被视作向上转换,这种转换是隐式的、自动的、安全的。例如:
int i = 10;
float f = i;
double b = i;
将一个float或double类型转换为一个int类型的转换方式被视作向下转换,这种转型可能会丢失数据。例如:
float f= 10.012f;
int i = (int)f;
超类和子类的相互转换:
将子类对象看作是超类对象,特定对象被当作一般对象去使用,这叫做向上转换。这种向上转换是隐式的、自动的、安全的。比如:已知Car类是超类,BMW类是Car类的子类,则在Car类与BMW类之间可以进行这样的向上转换:
Car car = new BMW();
将超类对象看作是子类对象,当作特定对象去使用,这叫做向下转换。这种向下转换是不安全的。比如:已知Car类是超类,BMW类是Car类的子类,在Car类与BMW类之间可以进行这样的向下转换:
Car car = new BMW();
BMW bmw = (BMW)car;
关于这类问题,我在秒秒学有看到详细的解说,你可以看看。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询