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
学习了对象之间类型的转换,是怎样应用的
下面就实际的代码实例 来进行讲解
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
相关文章推荐
- java(instanceof操作符、对象类型转换 、final 关键字、final,finally,finalize的区别、static关键字,修饰符 )
- 把java中的list对象转换成net.sf.JSONArray类型对象
- Spring MVC中日期类型参数与java对象的转换
- Java中对象类型的强制转换
- java:对象中引用类型转换的验证
- JAVA的对象类型转换
- Java中类对象之间的类型转换
- java的对象类型转换
- java对象转换String类型的三种方法
- Java知多少(33)多态对象的类型转换
- Java (对象间的类型转换)
- 【自用】Javanote170801(封装、多态、instanceof运算符、对象转换类型、final关键字、参数传递)
- 使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型
- 详解Java多态对象的类型转换与动态绑定
- java中的String类型的对象为什么可以自动转换成Object类型的?而Object却要强制转换成String类型的
- java中对象类型转换
- java fastjson如何自定义转换含枚举类型对象(编程技巧)
- Java中类对象之间的类型转换
- Java多态对象的类型转换
- java数据类型转换____FastJson框架对象和JSON转换