首页 > 其他分享 >封装继承多态和instanceof

封装继承多态和instanceof

时间:2023-09-25 13:11:25浏览次数:41  
标签:instanceof 调用 封装 子类 多态 构造 方法 父类 重写

封装

一般利用私有private把属性私有,使其无法被调用,想要调用就必须使用get/set快捷键Alt+insert方法来将其使用,它可以增强我们程序的安全性,同时再set的方法中我们可以加入关于变量能否被调用的一些限制

get/set输出私有变量方法

继承

继承是类与类之间的关系,我们可以让子类通过extend来继承父类拥有的除私有变量的全部内容,但是要注意,一个子类只能有一个父类,而一个父类可以有多个子类,我们可以通过快捷键CTRL+H来查看我们当前的“族谱”我们会发现所以类的祖先都是一个隐藏的Object类

继承语法

继承后的属性方法我们可以直接使用

Super

我们子类继承了父类后,想要引用父类的变量,就要用到super来替代this

经过继承后的子类被引用生成对象时,除了使用了子类的构造器外,还使用了父类的构造器,但是这里有一个坑,调用父类构造器必须在子类构造器的第一行

一旦不在第一行就会报错,同时调用子类自己的构造器,也需要放在第一行,所以我们只能选择一个调用,默认是调用父类的无参,如果父类没有无参构造,那么子类也不会有无参构造,就会报错,所以要写有参构造前先要把被隐藏的无参构造写上

方法重写

重写和属性没有半毛钱关系,重写的都是方法

后面一句能输出b,父类的引用指向了子类,是合法的

去除static后重写方法发现结果有明显不同

静态方法与非静态方法区别很大

子类重写了父类的方法,可以改变父类的方法

重写只和非静态方法有关

只能是public

方法名必须相同

参数列表必须相同

修饰符范围可以扩大,不能缩小

为什么需要重写?父类的功能子类不一定需要,或者不一定满足

快捷键Alt+override

多态

我们new一个对象时,默认对象类型为子类,但我们可以将对象类型改为父类,此时,我们可以使用父类的代码,但不可以使用子类的代码

下图就是多态的一种体现

instanceof

可用于判断对象与对应的类型是否有关系,并输出true or false

但是我们不能乱比较,比如我们定义了一个对象类型为person,那我们就不能拿它和String比较,因为他们直接没有关系,但我们定义的对象类型为Object时就可以与String比较,因为String是它的子类,也就是比较student与String

我们使用父类类型时,想要使用子类的方法就需要类型转换,和前面学习的强制转换差不多

(Student)person后Alt+回车进行转换,转换后的person1就可以调用子类方法了,或者可以((Student)person).go写成一句话

子类转换为父类可能会丢失一些自己的方法

标签:instanceof,调用,封装,子类,多态,构造,方法,父类,重写
From: https://www.cnblogs.com/javafirstlearn/p/17727722.html

相关文章

  • python面向对象的三大特性:封装性、继承性、多态性
    python面向对象的三大特性:封装性、继承性、多态性一、python中的封装在python代码中,封装具有两层含义:①在把现实世界中的实体中的属性和方法写到类的里面的操作即为封装。classPerson(object):#封装属性#封装方法②封装可以为属性和方法添加私有权限(属性和方......
  • 封装全局异常处理
    1定义错误码类​ 可以定义各种错误码枚举,比如业务,系统相关的报错信息/***错误代码*错误码**@authorleovany*@date2023/09/23*/publicenumErrorCode{SUCCESS(0,"success",""),ERROR_PARAMS(40000,"请求参数错误",""),ERROR_NULL(400......
  • 封装全局异常处理
    目录1定义错误码类2定义业务异常类3全局异常处理器4使用5前端请求效果总结1定义错误码类​ 可以定义各种错误码枚举,比如业务,系统相关的报错信息/***错误代码*错误码**@authorleovany*@date2023/09/23*/publicenumErrorCode{SUCCESS(0,"succe......
  • 【Java 基础篇】Java 接口全面解析:简化多态性与代码组织
    接口(Interface)是Java面向对象编程中的一个重要概念。它允许定义一组抽象方法,这些方法可以被实现类(类)实现。接口提供了一种规范,规定了实现类必须提供哪些方法,但不关心具体的实现细节。本篇博客将深入探讨Java中接口的概念、语法和实际应用,适用于初学者,帮助你轻松理解和应用接口......
  • 【Java 基础篇】Java多态:让你的代码更灵活而强大
    多态是面向对象编程中的一个重要概念,它允许我们在不同的对象上调用相同的方法,但根据对象的不同,可以产生不同的行为。在Java中,多态性是一个强大的特性,它有助于代码的可扩展性和可维护性。本篇博客将深入探讨Java中的多态概念、语法和实际应用,适用于初学者,帮助你轻松理解和应用多......
  • 封装总结
    封装就是把public的类变成private的类(个人理解)露出该露的,封装该封装的定义一个私有类以后可以用ALT+INSERT快捷生成get和set方法get方法主要是为了拿到私有类set是为了设置私有类的值,以及在set方法中写一些判断条件,以防止出现一些不合理的值构造器,就是一个无参的一旦有了有......
  • appium+Python封装日志类
    创建logger.py文件放置在框架目录Common文件夹下,logger.py代码如下:#_*_coding:utf-8_*_importloggingimporttimeclassLogger(object):def__init__(self,logger):self.logger=logging.getLogger(logger)self.logger.setLevel(logging.DE......
  • 关于vue的axios请求的封装
    先加载axiosimportaxiosfrom'axios';importVuefrom'vue';importQsfrom'qs';importurlsfrom'./url'import{ Message}from'element-ui';//用来设置接口请求频繁时候的调用varapi_url;varapi_data;//axios.def......
  • umi-Request请求封装
    /** *request网络请求工具 *更详细的api文档:https://github.com/umijs/umi-request */import{extend}from'umi-request';import{notification,message}from'antd';import{getToken}from'./utils';constcodeMessage={ ......
  • 关于文件下载的封装
    importaxiosfrom'axios'constisIE=()=>navigator.userAgent.toLowerCase().indexOf('trident')>-1; //判断是否为IE浏览器//文件下载exportasyncfunctiondownLoad(params){  //returnrequest('/ability/api/rs/gw/file/'......