1. 定义

    对象具有多种形态

  2. 类型

    • 引用的多态:

      • 父类的引用指向自身对象
      • 父类的引用指向子类对象
TrafficTool traffictool=new TrafficTool();//父类的引用指向本身类对象
TrafficTool traffictool1=new BMW();//父类引用指向子类对象
    • 方法的多态:

    创建本类对象时,调用的方法为本类方法。

创建子类对象时,调用的方法为子类继承的或者重写的方法。不允许调用子类独有的方法。

public class BMW extends TrafficTool{
int width;
int height;
public void BMW(){
System.out.println("这是子类!!");
}
public void drive(){
System.out.println("宝马汽车可以开!!");
}
public void bmw(){
System.out.println("这是子类独有的方法!!");
}
}

  1. 多态的优势

    • 多态的出现大大的提高了程序的扩展性
  2. 表现形式

    • java中的多态的表现形式一般分为两种:overriding(重写)和overloading(重载)
    • 如果在子类中定义某方法与其父类有相同的名称和参数,我们就可以这样说此方法被子类重写overriding,子类中的对象使用这个方法的时候,将调用子类中中的定义,此时对子类来说,父类中的方法定义如同被”屏蔽”了一样。如果在一个类中定义了多个同名的方法,它们或有不同的参数或有不同的参数类型,则称为方法的重载overloading。并且overloading的方式是可以改变返回值类型的。
  3. 引用类型转换

    • 向上类型转换,即隐式/自动类型转换,是小类型转换大类型
    • 向下类型转换,即强制类型转换,是大类型转换小类型
        BMW bmw=new BMW();
TrafficTool traffictool=bmw;//自动类型提升,向上类型转换
BMW bmw2=(BMW)traffictool;//强制类型转换,向下类型转换
  1. 使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全问题
    public static void main(String[] args) {
TrafficTool traffictool=new BMW();//父类引用指向子类对象
if(traffictool instanceof BMW){//父类引用能否转换子类类型
BMW bmw2=(BMW)traffictool;//因为父类traffictool引用指向的是子类BMW对象,所以可以强制转换
}else{
System.out.println("无法进行类型转换!");
}
if(traffictool instanceof QQ){
QQ qq2=(QQ)traffictool;//因为父类traffictool引用指向的是子类BMW对象,所以不可以转成子类qq2对象
}else{
System.out.println("无法进行类型转换,转换成QQ类型");
}
}

java三大特性--多态(1)的更多相关文章

  1. 三、java三大特性--多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  2. Java 三大特性——封装、继承、多态

    一.封装 封装,实际就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用. 概念:在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节 ...

  3. JAVA三大特性之多态

    面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据 ...

  4. JAVA基础第二章-java三大特性:封装、继承、多态

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  5. java三大特性:封装、继承、多态

    Java三大特性之封装   一.定义 封装性指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 二.使用封装的好处: 1 ...

  6. 浅析Java三大特性封装、继承、多态,及作业分析

    前言 本次博客衔接上次博客,作为这一阶段Java学习的分析.上一篇博客着重介绍了Java的OO编程思维,面向对象与面向过程的区别.本篇博客重心在Java的三大技术特性,附带作业分析. Java三大特性 ...

  7. Java三大特性

    Java 三大特性,算是Java独特的表现,提到Java 的三大特性, 我们都会想到封装, 继承和多态 这是我们Java 最重要的特性. 封装(Encapsulation) : 封装:是指隐藏对象的属 ...

  8. 浅谈Java三大特性

    Java三大特性想必大家都不陌生:封装.继承以及多态.很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~ 首先,名词解释: 封装 ...

  9. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

随机推荐

  1. lvs持久连接及防火墙标记实现多端口绑定服务

    lvs持久连接及防火墙标记实现多端口绑定服务 LVS持久连接: PCC:将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS: PPC:将来自于一个客户端发往某VIP的某端口的所有请求统统定向 ...

  2. 使用swiper.js实现移动端tab切换

    在项目中遇到的,要实现tab切换,我用的是swiper.js 官网:http://www.swiper.com.cn/api/start/new.html <!DOCTYPE html> ...

  3. 100以内与7有关的数(for和if)

  4. composer卸载重装

    $ composer remove phpunit/phpunit --dev $ composer require phpunit/phpunit --dev

  5. python 全栈开发,Day83(博客系统子评论,后台管理,富文本编辑器kindeditor,bs4模块)

    一.子评论 必须点击回复,才是子评论!否则是根评论点击回复之后,定位到输入框,同时加入@评论者的用户名 定位输入框 focus focus:获取对象焦点触发事件 先做样式.点击回复之后,定位到输入框, ...

  6. Spring事务传播行为

    什么是事务传播行为 public void methodA(){ methodB(); //doSomething } @Transaction(Propagation=XXX) public voi ...

  7. 014 在Spark中完成PV与UV的计算,重在源代码

    1.代码 object LogPVAndUV{ def main(args:Array[String]):Unit={ val conf=new SparkConf() .setMaster(&quo ...

  8. 094实战 关于js SDK的程序,java SDK的程序

    一:JS SDK 1.修改配置workspace 2.导入 3.Demo.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Trans ...

  9. (转)一位资深程序员大牛给予Java初学者的学习路线建议

    原文:http://geek.csdn.net/news/detail/238256 Java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是你是如何学习Java的 ...

  10. 陈国凯oi历程

    从此成了OI退役狗 说实话,当时NOIP比赛前就想写这篇,结果一直没有足够的动力和时间写,现在高考完了,也有了时间,就写一点东西,记录一下我的OI经历吧. 初入OI 高一时,我是信息技术课代表(当然没 ...