java声明一个父类A,java 子类强转父类 父类强转子类

1.基本数据类型

基本数据类型:

子类可以强转成父类,因为小范围可以强转大范围,不会有数据丢失。

父类也可以强转成子类,但是因为大范围强转成小范围,所以会有数据丢失。

2.Java 继承

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

Java 子类强转父类

父类引用指向子类对象:

java中子类强转父类,实际上依然是子类;

该引用只能调用父类中定义的方法和变量;

如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;

// A是父类,B是子类

A a = new A();

a.setName("a1");

a.sayA(); // sayA

B b = new B();

b.setName("b1");

b.setSex(true);

b.sayA(); // sayA from B

b.sayB(); // sayB

// Java中的对象进行类型提升,依然保持其原有的类型。

A a2 = (A) b; // 子类强转父类,其实仍然是子类

System.out.println(a2.toString()); // B [name=b1, age=0, sex=true]

// 该引用只能调用父类中定义的方法和变量;

// a2.sayB(); // The method sayB() is undefined for the type A 报错

// 如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;

a2.sayA(); // sayA from B a2其实是B,调用的是B方法

Java 父类强转子类

只有父类对象本身就是用子类new出来的时候, 才可以在将来被强制转换为子类对象.

// B b2 = (B) a; // atest.A cannot be cast to atest.B a是A,转不成B

// 只有父类对象本身就是用子类new出来的时候, 才可以在将来被强制转换为子类对象.

B b2 = (B) a2; // a2其实是B,可以转成B

System.out.println(b2.toString()); // B [name=b1, sex=true]

b2.sayA(); // sayA from B

b2.sayB(); // sayB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>