java继承篇

多态

1.可将子类的对象赋值给超类型的变量

(1)父类:Employee


/**
 * @ClassName Employee
 * @Author Gavin
 * @Date 2020/8/16
 **/
public class Employee {

    String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    int age;


}

(2)子类:Manager


/**
 * @ClassName Manager
 * @Author Gavin
 * @Date 2020/8/16
 **/
public class Manager extends Employee{

    String tile;

    public String getTile() {
        return tile;
    }

    public void setTile(String tile) {
        this.tile = tile;
    }
}

(3)测试类 TestMain。由于Manager是Employee的子类,所以可直接赋值。

/**
 * @ClassName TestMain
 * @Author Gavin
 * @Date 2020/8/16
 **/
public class TestMain {

    public static void main(String[] args) {
        Employee employee = new Manager();
    }
}

2.若父类变量接受了子类对象的赋值,当要重新转回子类变量时需要强制类型转换。继续使用上面的Employee 和 Manager为例。

(1)不支持从上(父)往下(子)直接转,编译报错。

(2)此时需要强制转(强制转也会报错)。强制转的前提是父类变量被子类对象赋值,重新转回子类变量的时候可以强制转

(3)通常为了避免运行时异常,会使用instanceof做一个与判断。因为employee2引用的是从Manager实例,所以可通过强制转换转回去;employee1则引用的是Employee实例,不支持向下强转回去

3.总结:子类转父类,直接转;父类转子类需要强制类型转换,为避免运行时错误,转换前可使用instanceof判断

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值