• 多态变量和向上造型

    • 多态变量

      • 子类和子类型

        • 类定义了类型
        • 子类定义了子类型
      • 子类的对象可以被当作父类的对象来使用
        • 赋值给父类的变量
        • 传递给需要父类对象的函数
        • 放进存放父类对象的容器里
      • 多态变量
        • Java的对象变量是多态的,它们能保存不止一种类型的对象
        • 它们可以保存的是声明类型的对象,或声明类型的子类的对象
        • 当把子类的对象赋给父类的变量的时候,就发生了向上造型
    • 向上造型
      • 子类的对象可以赋值给父类的变量

        • 注意,只是管理者发生了变化
      • 父类的对象不能赋值给子类的变量
        • Vechicle v = new Vechicle();
        • Car c = new Car();
        • v = c;//可以
        • c = v 错误
      • 可以用造型
        • c = (Car) v ;
        • (只有当v这个变量实际管理的是Car才行)
      • 造型
        • 用括号围起类型放在值的前面
        • 对象本身并没有发生任何变化
          • 所以不是“类型转换”
        • 运行时有机制
  • 类型系统
    • Object类

      • 图片

      • toString函数
        •  public String toString()
          {
          return "CD [artist=" + artist + ", numofTracks=" + numofTracks + ", toString()=" + super.toString() + "]";
          }
      • equals函数
        •  public boolean equals(Object obj)
          {
          // TODO Auto-generated method stub
          CD c = (CD)obj;
          return artist.equals(c.artist);
          }
    • 增加新的子类
      • 可扩展性

        • 不需要修改就可以直接去适应新的情况
      • 可维护性
        • 经过修改可以去适应新的情况
      •  package com.dome;
        
         public class MP3 extends Iterm
        { private String artist; public MP3(String title, int playingTime, boolean gotIt, String comment,String artist)
        {
        super(title, playingTime, gotIt, comment);
        // TODO Auto-generated constructor stub
        this.artist=artist;
        } @Override
        protected void print()
        {
        // TODO Auto-generated method stub
        System.out.print("MP3:");
        super.print();
        System.out.println(":"+artist);
        } public static void main(String[] args)
        {
        // TODO Auto-generated method stub } }

Java进阶学习(4)之继承与多态(下)的更多相关文章

  1. Java进阶学习:将文件上传到七牛云中

    Java进阶学习:将文件上传到七牛云中 通过本文,我们将讲述如何利用七牛云官方SDK,将我们的本地文件传输到其存储空间中去. JavaSDK:https://developer.qiniu.com/k ...

  2. Java进阶学习:log4j的学习和使用

    Java进阶学习——log4j的学习和使用 简介Loj4j Log4j的组成 Log4j主要由三大组组件构成: Logger: 负责生成日志,并能够对日志信息进行分类筛选,通俗的讲就是决定什么日志信息 ...

  3. Java学习--封装、继承、多态

    接下来几天会根据http://www.cnblogs.com/chenssy/category/525010.html中讲解的java内容做个学习笔记,在此感谢一下这位大仙!! 一.封装 对于封装而言 ...

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

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

  5. Java基础之浅谈继承、多态

    一.继承的理解 继承:简单通俗的来讲,继承就是一个类继承另一个类,通常用extends表示继承. 继承的类叫子类,被继承的类叫父类. 子类可以使用父类的变量和方法,同时也可以重写父类的方法. 在Jav ...

  6. Java—类的封装、继承与多态

    一.类和对象 1.类 类是数据以及对数据的一组操作的封装体. 类声明的格式: 类声明 { 成员变量的声明: 成员方法的声明及实现: } 1.1 声明类 [修饰符] class 类<泛型> ...

  7. java复习(5)---接口、继承、多态

    Java作为完全面向对象语言,接口.继承和多态是三个非常重要的概念. 1.继承. (1)关键字: extends (2)子类用super()调用父类构造函数,用super().方法 调用父类的成员方法 ...

  8. Java探索之旅(8)——继承与多态

    1父类和子类: ❶父类又称基类和超类(super class)子类又称次类和扩展类.同一个package的子类可以直接(不通过对象)访问父类中的(public,缺省,protected)数据和方法. ...

  9. java面向对象(封装,继承,多态,抽象,接口的定义和实现)

    1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...

  10. golang学习--go中'继承'和多态

    golang中没有继承的概念,这个struct属性上的继承,但是可以用匿名字段来模拟这个过程,方法上面的继承要使用接口.多态可以通过接口实现.可以看一下代码. package main import ...

随机推荐

  1. 《深入理解java虚拟机》读书笔记五——第六章

    第六章 类文件结构 1.无关性的基石 各种不同平台的虚拟机与所有平台都统一使用程序存储格式——字节码是构成平台无关的基石. 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java虚拟机不和包括Ja ...

  2. Wannafly Camp 2020 Day 7K 修炼

    搞了半天才发现TMD是个模拟 #include <bits/stdc++.h> using namespace std; #define int long long int x,y,p,q ...

  3. (转)HashMap和HashTable源码

    转自: http://www.cnblogs.com/ITtangtang/p/3948406.html http://frankfan915.iteye.com/blog/1152091 一.Has ...

  4. JDBC——ResultSet结果集对象

    ResultSet结果集对象,封装结果.它是怎么做到封装结果的呢? 游标,类似指针索引最初指在“列名”上,要取到数据就需要让游标向下移动移动后就指向了第一行数据,然后通过一些方法把第一行的每一列都取出 ...

  5. HTML表单提交标签

    <form>表单提交标签,设置提交范围 有name属性才能被提交 action:提交的地址url method:提交方式 get方式(默认):会将参数拼接在连接后,有大小限制(4k) po ...

  6. day22 定时任务

    检查软件是否安装 cronie [root@oldboyedu ~]# rpm -qa cronie cronie-1.4.11-19.el7.x86_64 [root@oldboyedu ~]# r ...

  7. SpringMVC进行Ajax请求页面显示乱码

    最近在项目的使用过程中发现在springmvc的项目中,使用返回页面的请求方式,数据都能正常显示,但是对于ajax的请求,始终显示乱码. 首先第一种是因为我们在web.xml中配置了spring的字符 ...

  8. Mybatis-生成逆向工程后对数据库的模糊查询详解

    MyBatis-使用逆向工程中方法进行模糊查询 1.应用mybatis逆向工程会大大的提高我们的开发效率,如何应用mabatis 逆向生成的代码进行模糊查询那. 2.首先看一下pojo 层中examp ...

  9. DM9000C网卡驱动程序编写与测试

    一般网卡驱动程序厂商会给我们提供一份模板驱动,我们的工作就是需要根据自己的需要更改这个模板驱动 1.DM9000C的硬件连接 硬件连接图如下所示:它接在S3C2440的BANK4内存控制器上,它只占用 ...

  10. C语言二维数组指针与指针数组

    http://c.biancheng.net/view/2022.html http://c.biancheng.net/view/2020.html