Java教程

Java向上转型

本文主要是介绍Java向上转型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

# 向上转型

对象可以作为自己本身的类型使用,也可以作为它的基类型使用。把对某个对象的引用视为对其基类型的引用的做法被称为向上转型。

向上转型是一个较专用类型向通用类型转换,所以总是很安全的。因为导出类是基类的一个超集,可能比基类含有更多的方法,所以在向上转型过程中,类接口中唯一可能发生的事情就是丢失方法。

向上转型变量类型由new决定,还是声明?

```java
public class Father {
public String name = "父类";
public void f1(){
System.out.println("这是父类方法");
}
}

public class Son extends Father{
public String name = "子类";
public void f1(){
System.out.println("这是子类方法f1");
}
public void f2(){
System.out.println("这是子类方法f2");
}

public static void main(String[] args) {
Father f = new Son();
System.out.println(f.name);
f.f1();
f.f2();//Cannot resolve method 'f2' in 'Father'
}
}

output:
父类
这是子类方法f1
```

(1)对象的类型是由创建它的类决定的,而不是由声明它的变量决定。

(2)父类引用只能调用父类的变量和方法

(2)父类方法只有在子类没有重写的情况下可以被父类类型的引用调用。如果子类重写了该方法就会调用子类的方法(动态连接)。

(4)f.f2()报错,向上转型不能调用子类中独有的方法

[参考链接](https://blog.csdn.net/kavensu/article/details/8079460?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242)

这篇关于Java向上转型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!