java 多态

实现多态需要:

  1. 有继承或实现(接口)的关系
  2. 有方法重写
  3. 父类引用指向子类对象     e.g.
    Animal a = new Dog();

多态中调用成员方法是编译看左(左边类型有没有此成员方法),运行看右(运行时实际使用右边类中的成员)

多态的应用场景:

父类型作为方法的形参的数据类型,这样使得方法可以接收任意的子类对象

 

多态中,成员变量是编译看左,运行看左。

 

类型转换:

  1. 向上转型(自动)
    Animal animal = new Dog();

     

  2. 向下转型(强制)
Dog dog = (Dog)animal;

 

注意:

只能在继承层次内进行转换

将父类对象转成子类之前,使用 instanceof 进行检查

if(animal instanceof Dog) {}

抽象类:

比普通类多了一种抽象方法。其他一样都可以有,成员变量、常量、普通方法、构造方法。

public abstract class Animal {
    int num = 30;
    final int age = 1;
    public abstract void eat();
    public void sleep() {}
}

接口

接口不能实例化,必须通过多态方式实例化子类对象。

接口的子类可以是抽象类,也可以普通类。

类与接口是实现的关系,接口与接口是继承的关系。

接口没有成员变量,只有公有的静态的常量

成员方法:7及以前只有公有的抽象方法 8有了默认和静态方法 9有了private方法

接口没有构造方法

继承与实现的区别:

继承:父类定义的是共性内容

实现:接口中定义扩展功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值