概述
文章目录
- 相关知识
- 向上转型
- 向下转型
相关知识
Java 语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。如果把引用类型转换为子类类型,则称为向下转型;如果把引用类型转换为父类类型,则称为向上转型。注意:两者必须为父子关系。
向上转型
把子类对象赋值给父类类型的变量(隐式转换,不用进行强制类型转换),被称为向上转型。
本质:父类的引用指向了子类的对象。
语法:
父类类型 引用名 = new 子类类型(); 例如:狗是动物的一种,那么也可以将狗看成一个动物对象。
class Animal{
public void info(){
System.out.println("我是动物");
}
}
class Dog extends Animal{
public void eat(){
System.out.println("狗在吃东西");
}
public static void main(String[] args) {
Animal animal = new Dog(); // 向上转型
animal.info();
}
}
执行结果: 我是动物
狗对象可以调用该方法,那么同样猫也可以调用该方法,这就做到了在父类中定义一个方法可以完成各个子类的功能。由于向上转型是一个从较具体类到较抽象类的转换,所以它总是安全的,因为我们可以说狗是动物,但是不能说动物是狗。
向上转型的特点如下:
(1)向上转型对象不能操作子类新增的成员变量(失掉了这部分属性),不能使用子类新增的方法(失掉了一些功能);
(2)向上转型对象可以操作子类继承或重写的成员变量,也可以使用子类继承的或重写的方法;
(3)如果子类重写了父类的某个方法后,当对象的向上转型对象调用这个方法时一定是调用了这个重写的方法,因为程序在运行时知道,这个向上转型对象的实体是子类创建的,只不过损失了一些功能而已。
向下转型
向下转型是指子类引用父类对象,就是将父类对象能转换成子类对象,这时需要满足两个条件:一是必须执行强制类型转换;二是必须确保父类对象是子类的一个实例,否则抛出异常。
语法: 子类类型 引用名 = (子类类型)父类引用;
class Animal{
public void info(){
System.out.println("我是动物");
}
}
class Dog extends Animal{
public void eat(){
System.out.println("狗在吃东西");
}
public static void main(String[] args) {
Animal animal = new Dog(); // 向上转型
Dog animal1 = (Dog) animal; // 向下转型
animal1.eat();
}
}
执行结果: 狗在吃东西
向下转型的特点如下:
向下转型对象可以操作父类及子类成员变量和成员方法;
向下转型对象访问重写父类的方法时,操作的是子类的方法;
向下转型必须进行强制类型转换;
向下转型必须保证父类对象引用的是该子类的对象,如果引用的是父类的其他子类对象,会抛出类型不匹配异常。
最后
以上就是冷傲马里奥为你收集整理的Java继承和多态之对象类型的转换相关知识向上转型向下转型的全部内容,希望文章能够帮你解决Java继承和多态之对象类型的转换相关知识向上转型向下转型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复