A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋双 黑马帝   /  2012-1-13 21:51  /  2044 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋双 于 2012-1-14 12:22 编辑

强制转换都可以应用在那些情况,只能将父类对象强制转换成子类对象嘛,还有别的情况吗?

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

4 个回复

倒序浏览
数据类型的强制转换.
int a = (int)6.5l;
float b = (float)a;
或者定义一个obj类型的数组,存放对象,取出的时候强制转换成原来的原型。
Vector<Object> v = new Vector<Object>();
v.add(new Student());
v.add(new Teacher());
Student s = (Student)v.elementAt(0);
Teacher t = (Teacher)v.elementAt(1);

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
子类对象是可以转换成父类对象的
父类对象要转换成子类对象就得具体分析了,因为子类对象一般都比父类对象多一些东西(参数或方法),如果直接强制转换Son son = (Son)father; 这样有时会出错,java有个instanceof 可以先对father 和 son 进行一个判断,if(father instaceof Son);如果返回true则些父类对象可以转换成子类对象,反之则不行
一般:Father father = new Father(); Son son = (Son)father;这样是会出错的;
   Father father = new Son();     Son son = (Son)father; 这种才不会出错;

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报

public class Test5 {
        public static void main(String[] args) {
                Person p = new Student("lisi");//此父类对象可以转换成子类对象
                Person p2 = new Person("zhaoliu");//此父类对象不可以转换成子类对象
                //System.out.println(p.getName());
                Student s = new Student("zhangsan","qinghe11zhong");
                //System.out.println(s.getName()+":"+s.getSchool());
                Person p3 = s;//子类对象可以转换成父类对象
               
       
                if(p instanceof Student){
                        Student s1 = (Student) p;
                        System.out.println("p可以转换成Student的对象");
                        }
                if(p2 instanceof Student){
                        Student s1 = (Student) p2;
                        System.out.println("p2可以转换成Student的对象");
                        }
        }
}

class Student extends Person{
        private String school;
        public Student(String name){
                this.setName(name);
        }
        public Student(String name,String school){
                this.setName(name);
                this.school = school;
        }
        public String getSchool(){
                return school;
        }
}
class Person {
        private String name;
        public Person(){}
        public Person(String name){
                this.name=name;
        }
        public String getName()
        {
                return name;
        }
        public void setName(String name){
                this.name = name;
        }
}
回复 使用道具 举报
子类强制转换为父类对象时,并没有实际丢失它原有内存空间(比父类多的那些部分)只是暂时不可访问。所以还能再转回来。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马