美文网首页学习随记
JAVA学习之多态篇(五)

JAVA学习之多态篇(五)

作者: 南三号 | 来源:发表于2017-08-27 16:31 被阅读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返回一个布尔值,使用方法:
<实例对象名> instanceof <类名>;
//意思:animal是不是Dog类型,是则返回true,否则返回false。
animal instanceof Dog;

四. 抽象类

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

应用场景

  • 在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。
  • 从多个具有相同特征的类中抽象出一个抽象类作为这些类的父类(即模板),从而避免子类设计的随意性。

注意:

  • abstract可以定义抽象类也可以定义抽象的方法
  • 包含抽象方法的类必须是抽象类
  • 抽象类可以包含普通方法,也可以没有抽象方法
  • 抽象类不能直接创建(实例化),但可以定义引用变量。即引用的多态<父类的引用可以指向子类的对象>

使用方法:

public abstract class Animal(){
    abstract void eat();
}

相关文章

  • JAVA学习之多态篇(五)

    多态=对象的多种形态 继承是多态的实现基础 一. 引用的多态 父类的引用可以指向本类的对象 父类的引用可以指向子类...

  • iOS 语言三大特性

    封装 、 继承、多态OC学习篇之---类的三大特性(封装,继承,多态) - Android应用安全防护和逆向分析-...

  • Java 多态之方法调用顺序

    本文例子取于<深入理解java多态性>和,分析 Ja...

  • 2017-12-30

    JAVA学习日记(8) 多态!!很重要

  • 学习JavaScript设计模式——面向对象(五)

    面向对象(五) 多态 我仔细看了一下,这里说的JavaScript 的多态好像和Java的多态不一样, Java ...

  • Java中的多态

    学习笔记:多态参考文章:Java多态的介绍[https://blog.csdn.net/newchitu/arti...

  • java基础概念

    java_basic 介绍 java基础 三大特性之—封装 三大特性之—继承 三大特性之—多态 抽象 接口 深拷贝...

  • java多态面试题

    java多态性 多态分两种: (1) 编译时多态(设计时多态):方法重载。 (2) 运行时多态:JAVA运...

  • java之“多态”

    本小仙女在刚刚工作一年的时候,自认为自己很懂java,然后看了大量的什么“java面试宝典”、“java面试经典题...

  • 宅男知识大补丸 学多态 认包包

    java零基础入门-面向对象篇(十) 多态 面向对象的三大特征,封装,继承我们讲完了,这次来讲多态。 多态就是指一...

网友评论

    本文标题:JAVA学习之多态篇(五)

    本文链接:https://www.haomeiwen.com/subject/roobdxtx.html