父类A a = new 子类B

2023-11-11

父类名 a = new 子类名()

子类名 b = new 子类名()

比较上面两种创建实例的区别:

a只能调用父类的函数,和子类重写父类的方法,不能调用父类中不存在的子类的函数,因为它没有继承。a是父类的引用,指向了一个子类对象,好处如果一旦发现该B对象无法适应   当前环境,可以转换成父类中的其它对象。

b可以调用父类的函数也可以调用子类的函数。

这里我们定义一个子类和一个父类        

//父类
public class Animal {
    String name;
    int age;
    public Animal(String name){
        this.name=name;
    }
    public void eat(){
        System.out.println(name+"正在吃");
    }
    public  void getage(){
        System.out.println(name+"年龄是"+age);
    }
}

//子类
public class Dog extends    Animal{
String name;
int age;
    public Dog(String name) {
        super(name);
       // this.name=name;
    }
    public void eat(){
        System.out.println(name+"正在吃ff");
    }
    public void neweat(){
        System.out.println("neweat");
    }
}

我们创建a和b两个实例 :

public class Manage {
    public static void main(String args[]){
        Animal a = new Dog("a");
        Dog b = (Dog) new Animal("b");
        a.eat();
        a.neweat();
        a.getage();
        b.eat();
        b.neweat();
        b.getage();
    }
}

由于a是父类animal类的引用并指向子类,a无法调用子类dog的neweat方法,程序a.getage();会报错。实际上a被向上转型为animal类,即父类。

在java中,子类不能被强制转型成父类,所以Dog b = (Dog) new Animal("b");这行命令会报错。

在删除这两条指令后:

public class Manage {
    public static void main(String args[]){
        Animal a = new Dog("a");
        a.eat();
        a.getage(); 
    }
}

程序可以顺利运行,只不过在子类和父类中都有的eat方法执行时调用的是子类重写的eat方法

输出结果为:

null正在吃ff
a年龄是0

由于子类中只继承了父类的构造方法,在创建a实例时先创建了父类的实例,调用父类的构造方法,将属性name赋值给了父类实例,子类实例的name默认是null,所以子类重写方法被调用时输出的name是null,父类的方法输出的name是"a".

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

父类A a = new 子类B 的相关文章

  • 禁用 iPhone 4S / 新 iPad 键盘上的听写按钮

    我们的应用程序是一个医疗保健应用程序 我们的应用程序中有一个符合 HIPAA 标准的语音识别器 所有听写都可以通过它进行 医院不希望医生意外开始与不符合 HIPAA 标准的 Nuance Dragon 服务器进行对话 因此 我正在寻找可以抑
  • 对 boost 库的依赖项没有完整路径

    我已经成功构建了动态库 依赖于使用自定义前缀构建和安装的 boost 库 b2 install prefix PREFIX 然而 当我跑步时otool L在我的库中 我得到如下输出 libboost regex dylib compatib
  • 在 Swift 中使用 commitEditingStyle 动态删除 UITable 部分

    我正在处理一个无法解决的问题 我有一个来自客户数据库数组的名称表 每个客户在其他数据成员中都有一个名称属性 我可以成功删除某个部分中的行 但我不能删除该部分 当该部分中的最后一行被删除时 该部分必须消失 I got NSInternalIn
  • 如何将字符串从 Applescript 传递到 Objective C

    我正在开发一个应用程序 我需要能够传递一个字符串变量 from 苹果脚本 to 目标C 我已经弄清楚如何从 Objective C 类中的方法运行 Applescript 但我需要能够将 NSString 设置为 Applescript 中
  • 在 OSX 和 GNU 中使用“find”删除带有数字的文件名

    我正在尝试搜索一个文件并删除名称中包含数字的类似文件 我的文件 txt from myfile 00 04 version txt myfile 00 txt find E iregex myfile 0 9 1 txt 删除 myfile
  • 显示器连接或断开连接时的通知

    我正在开发一个 OS X 应用程序 该应用程序在所有连接的显示器的所有可用空间上显示自定义窗口 我可以通过调用 NSScreen Screens 获取可用显示对象的数组 我目前缺少的是一种判断用户是否将显示器连接到系统或从系统断开屏幕的方法
  • NSOperation 中委托的使用

    我正在尝试利用CLLocationManager in an NSOperation 作为其中的一部分 我需要能够startUpdatingLocation然后等到收到 CLLocation 后才完成操作 目前我已经完成了以下操作 但是委托
  • AppDelegate 的变量用作全局变量不起作用

    我想使用我的 AppDelegate 来存储任何其他类都可以访问的对象 我已经像这样声明了这个 AppDelegate interface MyAppDelegate UIResponder
  • 如何从日期中获取小时、分钟和上午/下午? [复制]

    这个问题在这里已经有答案了 我尝试从日期中提取小时 分钟和上午 下午 但我得到 NULL 输出 我在下面显示了我的代码 请查看 NSString dateStr 29 07 2013 02 00am NSDateFormatter form
  • ca 证书 Mac OS X

    我需要在emacs 上安装offlineimap 和mu4e 问题是配置 当我运行 Offlineimap 时 我得到 OfflineIMAP 6 5 5 Licensed under the GNU GPL v2 v2 or any la
  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • 如何在 Mac 上设置默认 shell,例如钓鱼? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不喜欢重新输入fish每次我启动终端时 我想Fish https en wikipedia org wiki Fish Unix she
  • 将捕获的图像精确裁剪为 AVCaptureVideoPreviewLayer 中的外观

    我有一个使用 AV Foundation 的照片应用程序 我使用 AVCaptureVideoPreviewLayer 设置了一个预览层 它占据了屏幕的上半部分 因此 当用户尝试拍照时 他们只能看到屏幕上半部分看到的内容 这很好用 但是当用
  • UNIX/MacOS 上静态文件的“临时 Web 服务器”?

    是否有一个像小型网络服务器这样的东西 我可以从命令行调用它 只从本地文件系统获取文件并通过特定端口上的 HTTP 为它们提供服务 我希望能够做这样的事情 cd Sites mysite serve 10 0 1 1 8080 这应该会启动一
  • 如何为图层阴影不透明度设置动画?

    我有一个视图 我已将 LayerOpacity 设置为 1 theView layer shadowOpacity 1 0 当视图位于屏幕下方时 这看起来很好 当我将此视图向上移动以与另一个有阴影的视图齐平时 它们看起来不太好 有没有办法让
  • zsh:未找到命令:使用 Big Sur Mac 的终端上的 R

    我从官方 cran 网站安装了 R 我可以从 Rstudio 运行 R 但是当我尝试从终端使用 R 时 我得到以下结果 base ege Eges MBP R zsh command not found R base ege Eges MB
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • 带有文本字段的 iPhone AlertView

    我有一个UIAlertView with a UITextField在里面 我想输入mail id并提交于UIAlertView s ok按钮 但是UITextField in the UIAlertView没有回复 请帮助我 thankz
  • 子类 PFObject 上的 PFUser 属性

    我使用以下类 动态属性以及 m 文件中的 load 和 parseClassName 方法 对 PFObject 进行了子类化 interface DAOpponents PFObject
  • 从plist文件中读取数据

    我正在尝试为我的 iPhone 应用程序实现保存状态 我有一个名为 SaveData plist 的 plist 文件 我可以通过以下方式读取它 NSString pListPath2 bundle pathForResource Save

随机推荐

  • osgfbo(六)从pass的角度考虑,改写fbo(二)

    什么是pass 这个问题 看似简单 也让我头疼 看了osgdefered pass定义为osg Camera 杨石兴的osg视频教程定义为osg Group 我认为一个passRoot可以定义为一个Group 包含三部分 到目前pass为止
  • RT-Thread Smart 用户态开发体验

    背景 RT Thread Smart 是基于 RT Thread 操作系统上的混合操作系统 它把应用从内核中独立出来 形成独立的用户态应用程序 并具备独立的地址空间 自 V5 0 0 起 rt smart 分支已合并至 master 分支上
  • QT从入门到放弃------制作QT界面

    QT从入门到放弃 一 制作QT界面 创建工程 点击New Project 依次点击下图的Application QT Widgets Application Choose 根据自己的需求选择工程名和存放路径 路径千万不要有中文 路径千万不要
  • QT从入门到实战x篇_01_如何在qtcreator中创建一个程序?(MSVC编译器)

    1 按照如下顺序选择 我这里没有选择console的是因为我只是自己创建界面 不需要控制台的出现 2 命名及选择地址 选择下一步 3 选择基类 是否需要系统自动生成ui文件 基类中有三种选项分别为QWideget QMainWindow Q
  • Linux三级 学习笔记(二)计算机体系结构与操作系统-操作系统

    1 4 操作系统的基本概念 1 4 1 操作系统的定义和作用 操作系统的作用可以从用户和系统俩个不同角度来看 用户视角 系统视角 1 用户视角 操作系统为用户提供的服务有 程序开发 程序运行 I O设备访问 文件访问 系统资源访问 错误检测
  • App 抓包提示网络异常怎么破?

    背景 当你测试 App 的时候 想要通过 Fiddler Charles 等工具抓包看下 https 请求的数据情况 发现大部分的 App 都提示网络异常 无数据等等信息 以 贝壳找房 为例 Fiddler 中看到的请求是这样的 你可能开始
  • 已安装 MySQL,但执行 mysql 命令提示命令找不到!

    因个人需要 在阿里购买了一个轻量应用服务器 服务器配好 LAMP 环境 但奇怪是的我想登录 MySql 却提示命令找不到 查看 MySQL 运行状态 却是 Active running 提交了阿里工单 可是感觉客服是答非所问 我也是很无奈
  • Windows Terminal 和 WSL 安装及配置

    一 打开开发者选项和传递优化 二 在Microsoft Store安装Windows Terminal和Ubuntu子系统 三 配置 Windows Terminal配置 打开settings json配置文件 修改如下 此项用来配置打开W
  • 重磅!瞄准 Web 3.0,谷歌云推出专为区块链服务的 Blockchain Node Engine!

    本文由 Cloud Ace 整理发布 更多内容请访问 Cloud Ace 官网 区块链技术正在为世界各地的消费者和企业带来巨大的创新和价值创造 随着技术变得越来越主流 公司需要可扩展 安全和可持续的基础设施来发展业务并支持他们的网络 谷歌云
  • LeetCode-1124. 表现良好的最长时间段【哈希表,前缀和,单调栈】

    LeetCode 1124 表现良好的最长时间段 哈希表 前缀和 单调栈 题目描述 解题思路一 查字典 cur是当前的前缀和 劳累与不劳累天数之差 向前遍历 有两种情况 情况一 若cur大于0则是 0 i 的劳累与不劳累天数之差一定最大 记
  • Angular知识整合一:Angular中的组件和一些基本概念

    什么是Angular Angular是一个基于TypeScript构建的开发平台 它包括一下三个部分 一个基于组件的库 一组涵盖路由 表单管理 客户端服务端通信等各种功能继承的库 一套开发 构建 测试 更新代码的工具 Angular中的知识
  • matlab练习程序(渲染三原色)

    这里我用的空间是x向右为正 y向下为正 z向屏幕里面为正 相当于标准右手系绕x轴旋转了180度 将三个点光源放在 r 0 3 0 0 5 g 0 3 0 5 cos pi 6 0 5 sin pi 6 b 0 3 0 5 cos pi 6
  • 练习-Java继承和多态之接口

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 题目 任务 编写一个学校接待方面的程序 招待不同身份的人的食宿问题 编程要求 仔细阅读右侧编辑区内给出的代码框架及注释 在 Begin End 中编写一个学校接待方面的程序
  • 什么是电力系统的功率平衡?为什么在任何时候要保持电力系统的功率平衡?

    什么是电力系统的功率平衡 为什么在任何时候要保持电力系统的功率平衡 答 电力系统的功率平衡是指电力有功功率和无功功率的平衡 这种功率平衡也就是电力供需平衡 要求电力系统发送的功率与系统的负荷需要随时保持平衡 电能的一个最重要特点就是不能储存
  • 关于Vue.js中数据模型的绑定以及方法事件的绑定与调用

    在vue js中 我们可以将事件方法写在methods属性中 数据模型在data中定义 Vue的基本结构如下 只写最常用的 将数据与vue实例绑定通过v bind标签 这里绑定的是sourceId这个值 基于vue的双向绑定 如果要取vue
  • 蓝桥杯:整除序列

    整除序列 15分 题目描述 有一个序列 序列的第一个数是 n 后面的每个数是前一个数整除 2 请输出这个序列中值为正数的项 输入格式 输入一行包含一个整数 n 输出格式 输出一行 包含多个整数 相邻的整数之间用一个空格分隔 表示答案 评测用
  • 虚拟环境安装和操作

    文章目录 安装相应库和配置 查看已安装虚拟环境 创建虚拟环境 切换 进入虚拟环境 退出虚拟环境 虚拟环境 linux创建Python虚拟环境及配置 Django Flask项目中如何创建Python虚拟环境呢 汇总 环境迁移 安装相应库和配
  • 攻防世界MISC刷题1-50

    目录 1 ext3 2 base64stego 3 功夫再高也怕菜刀 4 easycap 5 reverseMe 6 Hear with your Eyes 7 What is this 8 normal png 9 something i
  • idea 添加 VUE 的语法支持和开发

    一 VUE的开发分两种 一种是直接在HTML文件中使用 一种是VUE文件的形式开发 1 首先我们先让 HTML 文件支持 VUE 的语法指令提示 2 File gt Setting gt Edit gt Inspections gt htm
  • 父类A a = new 子类B

    父类名 a new 子类名 子类名 b new 子类名 比较上面两种创建实例的区别 a只能调用父类的函数 和子类重写父类的方法 不能调用父类中不存在的子类的函数 因为它没有继承 a是父类的引用 指向了一个子类对象 好处如果一旦发现该B对象无