概述
记录一下强制类型转换
使用到的类
关系
- 接口
public interface animal {
public static animal getAnimal(int type){
animal result=null;
switch (type){
case 1:
result= new person();
break;
case 2:
result= new man();
break;
case 3:
result= new doctor();
break;
default:
break;
}
return result;
}
}
- person
public class person implements animal{
private String name;
private int age;
@Override
public String toString() {
return "person{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
public person() {
System.out.println("person 正在构建");
}
}
- man
public class man extends person{
public man(){
super();
System.out.println("person 正在构建");
}
@Override
public String toString() {
return "man:"+super.toString();
}
}
- doctor
public class doctor extends man{
private String id;
private String position;
public doctor() {
super();
System.out.println("doctor 正在构建");
}
@Override
public String toString() {
return "doctor{" +
"id='" + id + ''' +
", position='" + position + ''' +
'}'+ super.toString();
}
}
- 测试
public class test {
public static void main(String[] args) {
animal a=animal.getAnimal(2);
System.out.println(a);
man m=(man)a;
person p=(person)m;
doctor d=(doctor)m;
}
}
- 运行结果
总结
- 当对象被初始化之后,只能进行向下转换,而不能进行向上转换,例如这里我一开始将a初始化为man对象,那么它就无法升级为doctor。但是可以降级,变成它的父类以及它父类实现的接口,就如这里的person类,以及animal接口等。
- 当然,也可以进行升级。不过不是真正的升级,例如,你初始化对象是man对象,但是你用animal来接收,之后再通过强制类型转换来升级,这样是可以的,但是还是不能超过初始化时的上限,即无法到达doctor。
最初的想法(错误的)
我开始我觉得也可以向上进行升级,例如,我一开始初始化为man对象,可以将它升级为doctor,但是这里存在问题,向上升级的话需要调用子类的构造函数,可能会存在子类构造函数含参问题。
产生想法的地方
package com.jcraft.jsch
包下的ChannelSftp
、ChannelSession
、Channel
最后
以上就是飞快大侠为你收集整理的java 强制类型转换问题的全部内容,希望文章能够帮你解决java 强制类型转换问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复