Java——继承2

一、instanceof运算符

instanceof是二元运算符,左边是对象,右边是类;当对象是右面类或子类所创建对象时,返回true;否则返回false。

使用instanceof运算符进行类型判断的实例代码

public class IIIIIInstanceof {public static void main(String[]args){Student s=new Student ("Clerck",165,"java");System.out.println(s instanceof Person);System.out.println(instanceof Student);}
}

两条语句的结果都true

二、继承使用要点

  1. 父类也称作超类,基类。子类又作派生类等。
  2. Java中只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得系统链过于复杂,系统难于维护。
  3. Java中类没有多继承,但接口有多继承;
  4. 子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如父类私有的属性和方法);
  5. 如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object

三、方法的重写override

子类通过重写父类的方法,可以用自身的行为替换父类的行为,方法的重写是实现多态的必要条件。

方法的重写需要符合下面三个要点:

  1. 两个相等:方法名、形参列表相同;
  2. 小于等于:返回值类型声明异常类型,子类小于等于父类;
  3. 大于等于:访问权限,子类大于等于父类。

方法重写的实例代码

public class IIIIIInstanceof {public static void main(String[]args){Vehicle v1=new Vehicle();Vehicle v2=new Horse();Vehicle v3=new Plane();v1.run();v2.run();v3.run();v2.stop();v3.stop();}
}
class Vehicle{public void run(){System.out.println("跑……");}public void stop(){System.out.println("停止不动");}
}
class Horse extends Vehicle{//马也是交通工具public void run(){//重写父类方法System.out.println("四蹄翻飞,哒哒哒……");}
}
class Plane extends Vehicle {public void run() {//重写父类方法System.out.println("天上飞!");}public void stop(){System.out.println("空中不能停,坠毁了!");}}
/*** 跑……* 四蹄翻飞,哒哒哒……* 天上飞!* 停止不动* 空中不能停,坠毁了*/

四、final关键字

final关键字的作用:

  • 修饰变量:被它修饰的变量不可改变,一旦被赋了初值就不能被重新赋值

final int MAX_SPEED=120

  • 修饰方法:该方法不可被子类重写。但可以被重载!

final void study(){}

  • 修饰类:修饰的类不能被继承。比如Math、String等

final class A{}

五、继承和组合

我们可以通过继承方便的复用已经定义类的代码,而还有一种方式也可以让我们方便的实现“代”码复用,那就是“组合”。

“组合”不同于继承,他更加的灵活。

“组合”的核心就是“将父类对象作为子类的属性”,然后“子类通过调用这个属性来获得父类的属性和方法”。

public class Point {public static void main(String[]args){Student s=new student("Anny",188,"java");s.perosn.rest();//s.rest()s.study();}
}
class Person {String name;int height;public void rest() {System.out.println("休息一会儿!");}
}class Student /*extends Person*/{Person person=new person();String major;public Student(String name,int height,String major){this.person.name=name;//this.name=name;this.person.height=height;//this.height=heightthis.person.rest();this.major=major;}public void study(){System.out.println("要好好学习哦");}
}

组合比较灵活,继承只能有一个父类,但是组合可以有多个属性。所以有人建议“组合优于继承,开发中可以不用继承”。但笔者在这里不建大家走极端。

继承除了代码复用、也能方便我们对事物建模。所以对于“is-a”关系建议使用继承,“has-a”关系建议使用组合。

留在最后

  1. 面向对象的三大特征是什么?
  2. 继承的两个主要作用是什么?
  3. JAVA中实现继承是哪个关键字?
  4. JAVA中的类继承是单继承还是多继承?JAVA中有其它地方有多继承吗?
  5. 子类继承父类可以获得除父类构造方法之外的所有,但不见得都能使用,请用现实生活中的实例打比喻来描述这个现象。
  6. 定义类时,没有使用extends,那它的父类是什么?
  7. 组合和继承的关系如何理解?
  8. 方法的重写和方法的重载有什么区别?
  9. final关键字修饰变量、方法、类,都分别表示什么含义?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/173391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用阿里巴巴API获取商品详情的实践指南

摘要:本文将详细介绍如何使用阿里巴巴API获取商品详情数据,包括API的申请、认证、调用等步骤,并提供相关的代码示例。通过本文的实践指南,读者将能够轻松获取阿里巴巴平台上的商品信息,为业务开发提供有力支持。 一、引…

【XSLVGL2.0】如何在其它线程内更新UI

XSLVGL2.0 开发手册 【XSLVGL2.0】如何在其它线程内更新UI 1、概述2、UI资源锁锁死怎么办?1、概述 项目常常会在其它线程更新UI的状态,但如果直接更新UI会导致UI数据异常从而使得UI挂死。这时只需要使用UI资源锁即可保证UI数据不会异常了。 参考XSLVGL2.0 User Manual 页面…

Arthas 使用

Arthas是阿里巴巴开源的Java诊断工具,采用命令行交互的形式进行问题的定位与诊断。它能够帮助你. 解决以下问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我…

活动回顾|阿里云云原生 Serverless 技术实践营 深圳站回放PPT下载

11月24日“阿里云云原生 Serverless 技术实践营”深圳站圆满落幕。活动受众以关注 Serverless 技术的开发者、企业决策人、云原生领域创业者为主,活动形式为演讲、动手实操,让开发者通过一个下午的时间增进对 Serverless 技术的理解,快速上手…

visual Studio MFC 绘制单一颜色三角形、渐变颜色边框三角形、渐变填充三角形、边框渐变的正方形与填充渐变的正方形实例

MFC 绘制三角形 本文使用visual Studio MFC 平台实现绘制单一颜色三角形、渐变颜色边框三角形、渐变填充三角形、边框渐变的正方形与填充渐变的正方形. 关于基础工程的创建请参考Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 文章目录 MFC 绘制三角形…

在Python中matplotlib函数的plt.plot()函数的颜色参数设置,以及可以直接运行的程序代码!

文章目录 前言一、使用字符串颜色:二、使用十六进制颜色:三、使用RGB元组:四、使用颜色映射:总结 前言 在matplotlib中,plt.plot()函数可以接受颜色参数,可以设置为字符串颜色(如red&#xff0…

瓶盖内的条码需要注意哪些?,才能帮助企业有效搭建与消费者沟通~

在不断发展的消费品领域,特别是饮料行业,组织不断寻求创造性的方法来扩大客户参与度、增强品牌忠诚度并消除假冒产品。一种获得认可的新兴方法是在瓶盖和瓶盖上实施DataMatrix 条形码扫描。这种创新方法提供了许多好处,从改善消费者互动到强化…

利用广度优先或模拟解决米诺骨牌

本周推荐阅读 C二分算法:得到子序列的最少操作次数 题目 n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立。在开始时,同时把一些多米诺骨牌向左或向右推。 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。同样…

Python基础教程:强大的Pandas数据分析库

Pandas是一个基于 NumPy 的非常强大的开源数据处理库,它提供了高效、灵活和丰富的数据结构和数据分析工具,当涉及到数据分析和处理时,使得数据清洗、转换、分析和可视化变得更加简单和高效。本文中,我们将学习如何使用Pandas来处理…

Android BSP 开发之六

1.设定Android settings中某个xml文件(包括其子项)或者某个Preference不被搜索到 设定某个xml文件(包括子项)不被搜索到 找到该xml文件对应的fragment java文件中的SEARCH_INDEX_DATA_PROVIDER,在该provider中对isPageSearchEnabled方法进行重写并…

BEV+Transformer架构加速“上车”,智能驾驶市场变革开启

BEVTransformer成为了高阶智能驾驶领域最为火热的技术趋势。 近日,在2023年广州车展期间,不少车企及智能驾驶厂商都发布了BEVTransformer方案。其中,极越01已经实现了“BEVTransformer”的“纯视觉”方案的量产,成为国内唯一量产…

使用Pytorch从零开始构建Normalizing Flow

归一化流 (Normalizing Flow) (Rezende & Mohamed,2015)学习可逆映射 f : X → Z f: X \rightarrow Z f:X→Z, 在这里X是我们的数据分布,Z是选定的潜在分布。 归一化流是生成模型家族的一部分,其中包括变分自动编…

C# 图片下载工具类

写在前面 从浏览器的Html文本中获取图片链接并保存到本地,同时对图片的分辨率和品质进行处理,以满足某些平台的规格需求;可以放到多线程中调用以提高下载效率。 代码实现 public class ImageDownloader{private int minImageSize 1024 * 1…

系列二十、Spring循环依赖问题

一、概述 循环依赖是指多个bean之间相互依赖,形成了一个闭环。比如A依赖于B、B依赖于C、C依赖于A,形成了一个圈,如: 二、循环依赖案例 2.1、构造方法注入产生循环依赖案例 2.1.1、ServiceA /*** Author : 一叶浮萍归大海* Date…

AntDB数据库,通信行业20年变迁的见证者

2000年至今,通信行业发展已过了20多年。面对通信行业巨大的数据信息,数据库在行业发展中发挥了巨大的作用,AntDB数据库便是其中较为知名的一款数据库。在通信行业快速发展的阶段,打破国外产品与技术垄断是产业发展的重点与难点。面…

处理分类问题的不平衡数据的 5 种技术

一、介绍 分类问题在机器学习领域很常见。正如我们所知,在分类问题中,我们试图通过研究输入数据或预测变量来预测类标签,其中目标或输出变量本质上是分类变量。 如果您已经处理过分类问题,那么您一定遇到过以下情况:其…

HTML5原生视频播放器组件video的videocontrolslist属性详解

HTML5提供了内置的视频播放控件,其中videocontrolslist是其中一个很有用的属性。videocontrolslist属性可以用于告诉浏览器在视频播放过程中应该显示哪些默认的用户界面控件。下面我们将从几个方面来介绍videocontrolslist的详细使用。 一、启用videocontrolslist videocont…

2024重庆大学计算机考研分析

24计算机考研|上岸指南 重庆大学 重庆大学计算机考研招生学院是计算机学院和大数据与软件学院。目前均已出拟录取名单。 重庆大学计算机学院是我国高校最早开展计算机研究的基地之一,1978年和1986年获西南地区首个硕士和博士点,1998年成立计算机学院&a…

单片机学习2——流水灯的实现

#include<reg52.h>sbit LED P1^0; unsigned char i;void main() {while(1){LED 0;for(i0;i<100;i);LED 1;for(i0;i<100;i);} } RST是复位按钮&#xff0c;单击一下之后&#xff0c;程序就会跑到最开始的位置运行。 右侧的按钮是RUN按钮&#xff0c;单击下&…

ShardingSphere-JDBC 入门教程(v4.1.1)

框架介绍 ShardingSphere-JDBC 定位为轻量级 Java 框架&#xff0c;在 Java 的 JDBC 层提供的额外服务。它使用客户端直连数据库&#xff0c;以 jar 包形式提供服务&#xff0c;无需额外部署和依赖&#xff0c;可理解为增强版的 JDBC 驱动&#xff0c;完全兼容 JDBC 和各种 OR…