多态

对象有多种状态。作用:提高程序的可扩展性。

一个对象具备多种状态的能力,这个程序是可扩展的。
前提:
必须有层级关系 继承 实现
继承:子类和父类的关系,一个父类可以有多个子类,说明父类的引用有多种形态
作用类型: 形参、返回值、创建对象

可以将子类的方法重载,也可以直接将方法的形式参数类型改成父类的对象,子类对象向上转型为父类的引用,可以把它理解为类型隐式转换,由低到高。

在多态情况下,无法直接获得子类独有的成员,需要进行强制转换,向下转换为子类的类型,由高到低:

PM pm=(PM)employee;
但是假如方法里面还有其他子类的方法,需要使用instance判断employee对象是否某子类型的

instanceof

判断一个引用是否是一个类的实例

employee instanceof PM
判断employee对象否是PM类型

如果说子类有很多私有属性需要访问,可以使用方法重载来替换

抽象类abstract

每个子类都选择重写该方法,那么说明父类中该方法没有逻辑意义,就可以将该方法变成一个没有方法体的方法,变为抽象方法,且抽象方法在的类为抽象类,因此父类中也需要加上abstract

@Setter
@Getter
public abstract class Pets {
public abstract void fun();
}

抽象类一般出现在继承里面,且作为父类存在,且父类的抽象方法需要在每个子类中重写,抽象类中可以没有抽象方法,但是抽象方法中一定要有抽象类

@Setter
@Getter
public class JiXiangCat extends Pets {
private String name;
@Override
public void fun(){
}
}

抽象类中的属性和方法与普通类一样,但是会存在一个抽象方法,对于抽象方法可以与哪些修饰符一起使用?

public, protected, 默认, 不能加static修饰符

虽然有构造,抽象类不能直接创建对象,抽象类是服务于子类对象创造的,服务多态

使用抽象类创建匿名内部类,需要在创建的对象后面加上抽象方法的重写

public static void main(String[] args) {
Pets pets=new Pets() {
@Override
public void fun() {
}
};//创建匿名内部类对象
}

此时等同于创建了一个子类匿名的内部类对象,且对象类型是pets,如果需要向下调用子类独有的方法和属性,需要将改匿名内部类对象转化成子类型的对象:

 JiXiangCat jiXiangCat=(JiXiangCat)pets;

多态特征,instanceof关键字和abstract类的更多相关文章

  1. java基础14 多态(及关键字:instanceof)

    面向对象的三大特征: 1.封装   (将一类属性封装起来,并提供set()和get()方法给其他对象设置和获取值.或者是将一个运算方法封装起来,其他对象需要此种做运算时,给此对象调用) 2.继承   ...

  2. JAVA笔记6__抽象类/接口/多态/instanceof关键字、父类设计法则

    /** * 抽象类:很多具有相同特征和行为的类可以抽象为一个抽象类 * 1.抽象类可以没有抽象方法,有抽象方法的类必须是抽象类 * 2.非抽象类继承抽象类必须实现抽象方法[可以是空实现] * 3.抽象 ...

  3. Java之Object类与instanceof关键字

    Object类是所有类的父类: 我们上下代码: package com.learn.chap03.sec14; public class A { // 上面类A继承了Object类,因此又可这样定义: ...

  4. instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例。

    http://lavasoft.blog.51cto.com/62575/79864/    深入Java关键字instanceof 2008-06-02 07:50:43 标签:Java 关键字 休 ...

  5. 多态(instanceof)

    多态调用的三种格式 * A:多态的定义格式: * 就是父类的引用变量指向子类对象 父类类型 变量名 = new 子类类型(); 变量名.方法名(); * B: 普通类多态定义的格式 父类 变量名 = ...

  6. java基础9 main函数、this、static、super、final、instanceof 关键字

    一.main函数详解 1.public:公共的.权限是最大的,在任何情况都可以访问  原因:为了保证jvm在任何情况下都可以访问到main法2.static:静态,静态可以让jvm调用更方便,不需要用 ...

  7. Java面向对象_多态性、instanceof关键字

    一.多态 分类:方法的重载与重写:对象的多态性 对象的多态性:向上转型:将子类实例转为父类实例   格式:父类 父类对象=子类实例;是自动转换 向下转型:将父类实例转为子类实例   格式:子类 子类对 ...

  8. JAVA_SE基础——41.instanceof关键字(运算符)

    instanceof 关键字 instanceof关键字的作用:判断一个对象是否属于指定的类别. instanceof关键字的使用前提:判断的对象与指定的类别必须要存在继承或者实现的关系.关于实现以后 ...

  9. C# 多态与new关键字

    1. 你通常怎样用多态? 假设我有一个类,里面有一个 PrintStatus 方法,用于打印实例的当前状态,我希望该类的派生类都带有一个 PrintStatus 方法,并且这些方法都用于打印其实例的当 ...

随机推荐

  1. 技术分享 | innodb_buffer_pool_size为什么无法调低至1GB以内

    前言 innodb_buffer_pool_size可以调大,却不能调小至1GB以内,这是为什么? MySQL 版本:5.7.30 测试环境有台 MySQL 服务器反应很慢,检查系统后发现内存使用量已 ...

  2. 一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持

    目录 XSS 攻击 SQL 注入 CSRF 攻击 DDOS 攻击 DNS 劫持 XSS 攻击 全称跨站脚本攻击 Cross Site Scripting 为了与重叠样式表 CSS 进行区分,所以换了另 ...

  3. Prometheus完整安装

    官方组件: prometheus node_exporter blackbox_exporter alertmanager VictoriaMetrics 第三方开源软件: ConsulManager ...

  4. webSocket的基本使用与socket.io库使用

    前言: 传统的客户端与服务器进行通信,都是客户端向服务端发送请求,服务端进行响应,否则一般不会自动进行响应.单向,如果要持续获取服务端资源,则需要持续发送请求 初解决方案:轮询:客户端让http请求保 ...

  5. 开源深度思考 - In Community We Trust

    作者 | 黄东旭,PingCAP 联合创始人&CTO 出品 | CSDN(ID:CSDNnews) 业界一直流传着黄东旭的传说:小学三年级开始写代码,四五年级学习C语言,初中毕业时,已经能够用 ...

  6. Spring 02: Spring接管下的三层项目架构

    业务背景 需求:使用三层架构开发,将用户信息导入到数据库中 目标:初步熟悉三层架构开发 核心操作:开发两套项目,对比Spring接管下的三层项目构建和传统三层项目构建的区别 注意:本例中的数据访问层, ...

  7. 关于virtio_net网卡命名的小问题

    最近看了一个小问题,涉及到一致性网络设备命名(Consistent Network Device Naming),在此记录一下. 系统是 4.18.0-240.el8.x86_64,centos 8. ...

  8. [CF1538E] Funny Substrings (模拟)

    题面 该场 Div. 3 最"难"的一道题:Funny Substrings O I D \tt OID OID 队长喜欢玩字符串,因为 " O n e I n D a ...

  9. python必备基础

    1. 基础函数  序号  函数  说明  1 print()  打印  2 input()   输入   3 int()   转化为整形   4 float()  转化为浮点型   5 str()  ...

  10. 面试现场!月薪3w+的这些数据挖掘SQL面试题你都掌握了吗? ⛵

    作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 AI 面试题库系列:https://www.showmeai.tech/ ...