学习随记

JAVA学习之多态篇(五)

2017-08-27  本文已影响13人  南三号

多态=对象的多种形态

继承是多态的实现基础

一. 引用的多态

Animal obj1=new Animal();
//Dog类是Animal的子类
Animal obj2=new Dog();
//相当于你是一条狗,而你对外声明你是一个动物,而系统觉得你是一个动物,他就不会让你调用狗的方法
//obj2是一个Dog类型的,可以调用与父类共有的属性和方法,但不能调用Dog类相对于父类【特有】的方法。

二. 方法的多态

即子类不满意父类的某个方法进行重写

//Animal中eat()方法
public void eat(){
    system.out.println("动物可以吃东西");
}
//Dog中eat()方法
public void eat(){
    system.out.println("狗喜欢骨头");
}
//定义两个对象
Animal obj1=new Animal();
Dog obj2=new Dog();
obj1.eat();//输出“动物可以吃东西”
obj2.eat();//输出“狗喜欢骨头”

三. 多态中的引用类型转换

Dog dog=new Dog();
Animal animal=dog;//进行了向上转换
Dog dog2=(Dog)animal;//进行了向下类型强制转换,而直接Dog dog2=animal会报错。
//一二两句等价于:
Animal animal=new Dog();
//instanceof返回一个布尔值,使用方法:
<实例对象名> instanceof <类名>;
//意思:animal是不是Dog类型,是则返回true,否则返回false。
animal instanceof Dog;

四. 抽象类

abstract关键字
抽象类关注子类具有的特征,但不注重子类如何去实现。

应用场景

注意:

使用方法:

public abstract class Animal(){
    abstract void eat();
}
上一篇 下一篇

猜你喜欢

热点阅读