java面向对象(八)

文章目录

  • 一、abstract关键字的使用
    • 1.概念
    • 2. abstract修饰类:抽象类
    • 3.abstract修饰方法,抽象方法
    • 4.abstract使用上的注意点:
    • 5.抽象类的匿名子类
  • 二、计算一段代码执行所花费的时间
  • 三、接口的使用
    • 1.接口的使用
    • 2.定义接口中的成员
    • 3.代码demo
    • 4.Java类可以实现多个接口 ---->弥补了Java单继承性的局限性
  • 四、类的内部成员之五:内部类
    • 1.概念
    • 2.成员内部类


提示:以下是本篇文章正文内容,下面案例可供参考

一、abstract关键字的使用

1.概念

1.abstract :抽象的
2.abstract可以用来修饰的结构:类、方法

2. abstract修饰类:抽象类

此类不能实例化
抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)
开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作

3.abstract修饰方法,抽象方法

抽象方法只有方法的声明,没有方法体

	//不是抽象方法:public void eat(){}//抽象方法public abstract void eat();

包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法的。

若子类重写了父类中的所有的抽象方法后,此子类方可实例化。

若子类没有重写父类中的所有的抽象方法,则子类也是一个抽象类,需要使用abstract修饰

4.abstract使用上的注意点:

1.abstract不能用来修饰:属性、构造器等结构
2…abstract不能用来修饰私有方法、静态方法、final的方法、final的类

5.抽象类的匿名子类

在这里插入图片描述
eat()在Person类中是抽象方法,需在此重写

二、计算一段代码执行所花费的时间

在这里插入图片描述
在这里插入图片描述

public class TemplateTest{main(){SubTemplate t = new SubTemplate();t.spendTime();}
}abstract class Template{public void spendTime(){long start = System.currentTimeMillis();code();   //不确定的部分,易变的部分long end = System.currentTimeMillis();Sysout("花费的时间为:"+(end - start));}public abstract void code();
}class SubTemplate extends Template{public void node(){......}
}

三、接口的使用

1.接口的使用

1.接口使用interface来定义
2…Java中,接口和类是并列的两个结构
3.接口中不能定义构造器的!意味着接口不可以实例化
4.Java开发中,接口通过让类去实现(implements)的方式来使用。如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化,如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为一个抽象类

2.定义接口中的成员

1.JDK7及以前:只能定义全局常量和抽象方法

全局常量: public static final的.但是书写时,可以省略不写
抽象方法:public abstract的

2.JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法(略)

3.代码demo

class Plane implements Flyable{public void fly(){sysout("通过引擎起飞");}public void stop(){sysout("停止飞");}
}

4.Java类可以实现多个接口 ---->弥补了Java单继承性的局限性

1.格式: class AA extends BB implements CC,DD,EE

2.接口与接口之间可以继承,而且可以多继承,接口的具体使用,体现多态性

四、类的内部成员之五:内部类

1.概念

1.Java中允许将一个类A声明在另一个类B中,则类A 就是内部类,类B就是外部类。
2.内部类的分类: 成员内部类(静态、非静态) vs 局部内部类(方法内、代码块内、构造器内)

2.成员内部类

一方面,作为外部类的成员。

调用外部类的结构
可以被static修饰
可以被4种不同的权限修饰

另一方面,作为一个类:

类内可以定义属性、方法、构造器等
可以被fina1修饰,表示此类不能被继承。言外之意,不使用fina1,就可以被继承
可以被abstract修饰


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

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

相关文章

uniapp:APP开发,后台保活

前言: 在ios中,软件切换至后台、手机息屏,过了十来秒软件就会被系统挂起,APP内的任务就不能继续执行;在android中,默认情况下,软件在后台运行的时候,触发某些特定条件的情况下&…

高性能实践

1、认识性能 从用户体验来看,性能就是响应时间短; 从开发角度来看,性能主要是执行效率高。 性能主要表现形式如下: (1)响应时间,AVG、MAX、MIN、TP95、TP99 (2)吞吐…

物联网网关:连接设备与云端的桥梁

物联网网关作为连接设备与云端的桥梁,承担着采集数据、设备远程控制、协议转换、数据传输等重要任务。物联网网关是一种网络设备,它可以连接多个物联网设备,实现设备之间的数据传输和通信。物联网网关通常具有较高的网络带宽和处理能力&#…

浙江大学《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作——2023学生开学季辉少许

浙江大学《乡村振兴战略下传统村落文化旅游设计》许少辉八一著作——2023学生开学季辉少许

代码随想录算法训练营第一天(C)| 704. 二分查找 27. 移除元素

文章目录 前言一、704. 二分查找二、27. 移除元素三、34. 在排序数组中查找元素的第一个和最后一个位置总结 前言 这次是C; 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素_愚者__的博客-CSDN博客 (java) 一、704. 二分查找 的优…

【Java 基础篇】Java线程安全与并发问题详解

多线程编程在Java中是一个常见的需求,它可以提高程序的性能和响应能力。然而,多线程编程也带来了一系列的线程安全与并发问题。在本文中,我们将深入探讨这些问题,以及如何解决它们,适用于Java初学者和基础用户。 什么…

RabbitMQ消息可靠性(二)-- 消费者消息确认

一、消费者消息确认是什么? 在这种机制下,消费者在接收到消息后,需要向 RabbitMQ 发送确认信息,告知 RabbitMQ 已经接收到该消息,并已经处理完毕。如果 RabbitMQ 没有接收到确认信息,则会将该消息重新加入…

在visual studio里安装Python并创建python工程

在2009年,云计算开始发力,Python、R、Go这些天然处理批量计算的语言也迅猛发展。微软在2010年,把Python当成一个语言包插件,集成到了visual studio 2010里。在"云优先,移动优先"的战略下,于2015年…

如何在 Excel 中进行加,减,乘,除

在本教程中,我们将执行基本的算术运算,即加法,减法,除法和乘法。 下表显示了我们将使用的数据以及预期的结果。 | **S / N** | **算术运算符** | **第一个号码** | **第二个号码** | **结果** | | 1 | 加法(&#xff…

【Redis】深入探索 Redis 的哨兵(Sentinel)机制原理,基于 Docker 模拟搭建 Redis 主从结构和哨兵分布式架构

文章目录 一、对 Redis Sentinel 的认识1.1 什么是 Redis Sentinel1.2 为什么要使用 Redis Sentinel1.2.1 主从复制问题1.2.2 人工恢复主节点故障 二、Redis Sentinel 原理剖析2.1 Redis Sentinel 架构2.2 Raft 算法和领袖节点2.3 哨兵节点2.4 故障检测2.5 故障切换2.6 监控和通…

MybatisMybatisPlus 操作 jsonb 格式数据

最近有用到postgresql&#xff0c;里面的一个特色数据类型便是jsonb&#xff0c;和json差不多&#xff0c;但是查询比较快&#xff0c;关于概念&#xff0c;这里就提一句&#xff0c;不赘述。 我们先来看下用mybatisplus&#xff0c;首先是查询数据。 依赖&#xff1a; <d…

【MySQL】 MySQL的增删改查(进阶)--壹

文章目录 &#x1f6eb;数据库约束&#x1f334;约束类型&#x1f38b;NOT NULL约束&#x1f38d;UNIQUE&#xff1a;唯一约束&#x1f333;DEFAULT&#xff1a;默认值约束&#x1f384;PRIMARY KEY&#xff1a;主键约束&#x1f340;FOREIGN KEY&#xff1a;外键约束&#x1f…

8.idea 使用 docker 构建 java web 项目

docker 构建 java web 项目 和 docker 构建 spring boot 项目&#xff0c;除了 Dockerfile 不同&#xff0c;其他是都一样的。其他步骤参考&#xff1a;idea 使用 docker 构建 spring boot 项目&#xff0c;构建 Java Web 项目的 Dockerfile示例如下&#xff1a; 因为 java web…

idea中提示:error has occurred, please check your installation and try again

目录 报错原因解决总结 报错 idea中提示&#xff1a;error has occurred, please check your installation and try again 原因 1.起初我是把一个运行正常的java程序&#xff0c;放到了src下&#xff0c;新建的一个包&#xff08;包名为java.first&#xff09;中&#xff0c…

NLP文本生成全解析:从传统方法到预训练完整介绍

目录 1. 引言1.1 文本生成的定义和作用1.2 自然语言处理技术在文本生成领域的使用 2 传统方法 - 基于统计的方法2.1.1 N-gram模型2.1.2 平滑技术 3. 传统方法 - 基于模板的生成3.1 定义与特点3.2 动态模板 4. 神经网络方法 - 长短时记忆网络(LSTM)LSTM的核心概念PyTorch中的LST…

动力节点老杜JavaWeb笔记(全)

Servlet 关于系统架构 系统架构包括什么形式&#xff1f; C/S架构B/S架构 C/S架构&#xff1f; Client / Server&#xff08;客户端 / 服务器&#xff09;C/S架构的软件或者说系统有哪些呢&#xff1f; QQ&#xff08;先去腾讯官网下载一个QQ软件&#xff0c;几十MB&#xff…

ChatGLM LoRA微调定制AI大模型

一、前言 对于 ChatGLM2-6B 模型基于 PEFT 的特定任务微调实验。 1.1 硬件需求 注:r 为LoRA 维数大小,p 为前缀词表大小,l 为微调层数,ex/s 为每秒训练的样本数。gradient_accumulation_steps 参数设置为 1。上述结果均来自于单个 Tesla V100 GPU,仅供参考。 1.2 微调方…

反射获取类及其父类的所有字段

getFields返回一个Field类型数组&#xff0c;其中包含当前类的public字段&#xff0c;如果此类继承于某个父类&#xff0c;同时包括父类的public字段。其它的proteced和private字段&#xff0c;无论是属于当前类还是父类都不被此方法获取。 getDeclareFields返回一个Field类型…

vector使用和模拟实现

&#x1f493;博主个人主页:不是笨小孩&#x1f440; ⏩专栏分类:数据结构与算法&#x1f440; C&#x1f440; 刷题专栏&#x1f440; C语言&#x1f440; &#x1f69a;代码仓库:笨小孩的代码库&#x1f440; ⏩社区&#xff1a;不是笨小孩&#x1f440; &#x1f339;欢迎大…

记一次clickhouse手动更改分片数异常

背景&#xff1a;clickhouse中之前是1分片1副本&#xff0c;随着数据量增多&#xff0c;想将分片数增多&#xff0c;于是驻场人员手动添加了分片数的节点信息 <clickhouse><!-- 集群配置 --><clickhouse_remote_servers><feihuang_ck_cluster><sha…