java对象的类型转换_java 对象的类型转换

上一周学习的总结

学习了对象之间类型的转换,是怎样应用的

下面就实际的代码实例 来进行讲解

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");  }     }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值