您的位置:首页 > 编程语言 > Java开发

java 对象的类型转换

2008-05-12 11:02 411 查看
上一周学习的总结
学习了对象之间类型的转换,是怎样应用的
下面就实际的代码实例 来进行讲解

public class stylechange {
public stylechange() {
}

}
class A
{

public void func1()
{
System.out.println("a func1 is calling");
}

public void func2()
{
func1();
}
}
class B extends A
{
public void func1()
{
System.out.println("B func1 is calling ");
}
public void func3()
{
System.out.println("B func3 is calling");
}
}
class c
{

public static void main (String args[])
{

/* B b =new B();
callA(b);这样做是可以的 因为子类会自动进行类型的转换*/
//B b =new B();
// A a=b;
// callA(a);

/*B b=a;

callA(b);这样做是不可以的,当在callA中传递的参数是A 的对象的时候,编译器不会通过*/

//callA(new A());//创建了一个A 类的对象并调用callA .这个时候callA 中再次为 对象a 强制类型 转换为b 这就会在执行的时候出现错误,在编译的时候无错误
//callA(new B());
callA(new B());

}
public static void callA (A a)
{
/* B b=(B)a;//把父类对象赋予给一个子类的对象是不行的如B b=a,必须进行强制类型转换如B b=(B)a.强制类型转换只是进行一下类型的说明,
//通过编译宜而已,而实际这个对象是什么类型还是什么类型,比如上边 callA(new A)传递进来的是类A的对象,转换后,成为B ,蒙混过编译器,但是在实际执行的时候,
//发现它是A 类所以不能执行b 的方法.
b.func1();
b.func2();
b.func3();
//a.func3();虽然传递的B 类,但是也不能引用a,让他进行调用func3*/

/*if(a instanceof B)
{
B b=(B)a;
b.func1();
b.func2();
b.func3();
}
else */
a.func1();
a.func2();

}
}
class Student extends Object
{
private String name;
private int age;
public Student(String name,int age)
{
this.name=name;
this.age=age;
}
public boolean equals(Object obj)//obj 相当于父类,而student 相当于子类,obj 是一个子类对象话 就把 obj 类型转换成Student 赋值给子类对像.
{
Student st=null;
if(obj instanceof Student)
{
st=(Student)obj;
if(st.name==name&&st.age==age)
return true;
else
return false;

}
else
return false;
}

public static void main(String args[])
{
Student st1=new Student("wangwu",25);
Student st2=new Student("wangwu",25);
if(st1.equals(st2))
{
System.out.println("equals");
}
else
System.out.println("unequals");
}

}本文出自 “Fighting” 博客,请务必保留此出处http://fangfang0717.blog.51cto.com/236466/76529
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: