当前位置: 首页 > news >正文

面向对象进阶:多态、内部类、常用API

目录

 Java中的接口

Java中的内部类

 常用API

StringBuilder类


Java高级面向对象编程

在这篇博客文章中,我们将探索Java中的高级面向对象编程概念,包括接口、内部类和常用API。每个概念都将通过代码示例来演示它们的应用。

 Java中的接口

 什么是接口?

接口是Java中的一种引用类型,类似于类,它可以包含常量、方法签名、默认方法、静态方法和嵌套类型。接口不能包含实例字段,接口中的方法默认是抽象的。

接口的特点

- **声明**:接口使用`interface`关键字声明。
- **实现**:类使用`implements`关键字实现接口。
- **多继承**:一个类可以实现多个接口。

 示例

```java
public interface Animal {void eat();void sleep();
}public class Dog implements Animal {@Overridepublic void eat() {System.out.println("Dog eats bone");}@Overridepublic void sleep() {System.out.println("Dog sleeps");}public static void main(String[] args) {Dog dog = new Dog();dog.eat();dog.sleep();}
}
```

在这个示例中,我们定义了一个名为`Animal`的接口,和一个实现该接口的`Dog`类。`Dog`类实现了`Animal`接口的所有方法。

JDK 8及以后接口的新特性

- **默认方法**:使用`default`关键字,允许在接口中定义方法体。
- **静态方法**:使用`static`关键字,可以直接在接口中调用,而不需要实现类。
- **私有方法**:从JDK 9开始,接口可以包含`private`方法,供其他默认方法或私有方法调用。

 示例

```java
public interface Vehicle {default void start() {System.out.println("Vehicle is starting");}static void check() {System.out.println("Vehicle check");}private void clean() {System.out.println("Vehicle clean");}
}public class Car implements Vehicle {public static void main(String[] args) {Car car = new Car();car.start();  // 调用默认方法Vehicle.check();  // 调用静态方法}
}
```

Java中的内部类

 内部类的概述

内部类是在一个类里面定义的类。根据定义的位置不同,内部类可以分为以下几种类型:

1. **静态内部类**:使用`static`关键字修饰,属于外部类本身。
2. **成员内部类**:不使用`static`修饰,属于外部类的对象。
3. **局部内部类**:定义在方法、代码块或构造器中。
4. **匿名内部类**:没有名字的内部类,通常用于简化代码。

 示例:静态内部类

```java
public class Outer {public static class StaticInner {public void display() {System.out.println("Static Inner Class");}}public static void main(String[] args) {Outer.StaticInner inner = new Outer.StaticInner();inner.display();}
}
```

 示例:成员内部类

```java
public class Outer {public class MemberInner {public void show() {System.out.println("Member Inner Class");}}public static void main(String[] args) {Outer outer = new Outer();Outer.MemberInner inner = outer.new MemberInner();inner.show();}
}
```

 示例:匿名内部类

```java
public interface Greeting {void sayHello();
}public class Main {public static void main(String[] args) {Greeting greeting = new Greeting() {@Overridepublic void sayHello() {System.out.println("Hello, Anonymous Inner Class!");}};greeting.sayHello();}
}
```

 常用API

 Object类

`Object`类是Java所有类的父类,提供了一些常用方法,如`toString()`和`equals()`。

 示例

```java
public class Person {private String name;public Person(String name) {this.name = name;}@Overridepublic String toString() {return "Person{name='" + name + "'}";}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return name.equals(person.name);}public static void main(String[] args) {Person p1 = new Person("Alice");Person p2 = new Person("Alice");System.out.println(p1);  // 输出:Person{name='Alice'}System.out.println(p1.equals(p2));  // 输出:true}
}
```

StringBuilder类

`StringBuilder`是一个可变的字符串类,提供了高效的字符串操作能力。

 示例

```java
public class StringBuilderExample {public static void main(String[] args) {StringBuilder sb = new StringBuilder();sb.append("Hello");sb.append(" ");sb.append("World");System.out.println(sb.toString());  // 输出:Hello World}
}
```

通过这些示例,我们可以看到Java中的高级面向对象编程概念如何应用于实际开发中,提高代码的灵活性和可维护性。

--- 

希望这篇文章对您理解Java的高级面向对象概念有所帮助!如果有任何问题,欢迎讨论。

相关文章:

面向对象进阶:多态、内部类、常用API

目录 Java中的接口 Java中的内部类 常用API StringBuilder类 Java高级面向对象编程 在这篇博客文章中,我们将探索Java中的高级面向对象编程概念,包括接口、内部类和常用API。每个概念都将通过代码示例来演示它们的应用。 Java中的接口 什么是接口&…...

寸(英寸)、码、斤、公顷等日常中大概的换算单位你清楚吗

这些单位和概念是我们日常生活和工作中不可或缺的部分,理解它们的用途和转换关系可以让我们更有效地处理信息、进行交流和解决问题。 1、寸(英寸) 1寸(或英寸)等于0.0254米,2寸等于:20.0254&a…...

Python面试宝典第26题:最长公共子序列

题目 一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。比如:"ace" 是 "abcde" 的子序列,但 "…...

接口测试学习笔记2

一、复习和扩展: 1、金字塔测试模型 UI测试 -- 黑盒 Service 服务层--函数之间的调用 灰盒 接口测试 Unit单元层--白盒测试 趋势:逐步向下发展 测试优先、测试驱动 -- 先考虑怎么测,再考虑怎么开发 满足软件测试的可控范围 2、…...

vue3修改带小数点的价格数字:小数点的前后数字,要分别显示成不同颜色和大小!已经封装成组件了!

需求&#xff1a; 修改带小数点的价格数字&#xff1a;小数点的前后数字&#xff0c;要分别显示成不同颜色和大小&#xff01;已经封装成组件了&#xff01; 效果&#xff1a; 前面大&#xff0c;后面小 代码&#xff1a; 组件&#xff1a; <!--修改小数点前后数字不同…...

JVM(Java虚拟机) - JVM内存分配与内存管理

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有疑问和建议&#xff0c;请私信或评论留言&#xff01; 前言 Java虚拟机&…...

Linux中vim的基本介绍和使用

善为理者&#xff0c;举其纲&#xff0c;疏其网。 vim 1、vim介绍2、命令模式详情3、底行模式详情4、困难问题5、历史存疑问题6、vim配置问题6、1、配置的原理6、2、一键式配置 1、vim介绍 如果我面想要在Linux上编写代码的话&#xff0c;我就需要vim来帮助我们编写代码。但是…...

宝塔面板上,安装rabbitmq

废话不多说&#xff0c;直接上干货&#xff01; 第一步&#xff1a;登录宝塔账号&#xff0c;在软件商店里搜索 第二步&#xff1a;点击设置 第三步&#xff1a;已经完成了&#xff0c;还看啥&#xff01;...

【Docker系列】Docker 镜像管理:删除无标签镜像的技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

数据采集器

目录 1. 采集Redis 2. 采集MySQL 3. 采集容器 1. 采集Redis 出口商和集成 |普罗 米修斯 (prometheus.io) 发布 奥利弗006/redis_exporter (github.com) 在目标机器上安装redis 上传redis采集器包redis_exporter-v1.53.0.linux-amd64.tar.gz [rootharbor opt]# tar -xf …...

小红书0510笔试-编程题

解题思路&#xff1a; 先射击左边和先射击右边两种情况&#xff0c;就是2*1/n*(n-1)的概率。 解题思路&#xff1a; 枚举所有的评论作为最小值&#xff0c;按评论从大到小排序&#xff0c;每次遍历到的都是最小值。要想得到以该评论为最小值的最大优秀度&#xff0c;就要维护一…...

2024年热门开放式耳机评测!悠律、韶音、声阔到底该选谁?

开放式耳机选购技巧篇&#xff0c;可参考选购&#xff01; 作为一名数码评测博主&#xff0c;这两年用过的开放式耳机不下50款了&#xff0c;市面上的开放式耳机众多&#xff0c;很多人不知道该如何选择&#xff0c;其实选购都是有一定的技巧和规律性的&#xff0c;看配置就能…...

计算机毕业设计选题推荐-智慧物业服务系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...

新手小白学习PCB设计,立创EDA专业版

本教程有b站某UP主的视频观后感 视频链接&#xff1a;http://【【教程】零基础入门PCB设计-国一学长带你学立创EDA专业版 全程保姆级教学 中文字幕&#xff08;持续更新中&#xff09;】https://www.bilibili.com/video/BV1At421h7Ui?vd_sourcefedb10d2d09f5750366f83c1e0d4a…...

查物流信息用什么软件

在电子商务日益繁荣的今天&#xff0c;快递物流信息的查询成为了我们日常生活中不可或缺的一部分。无论是网购达人还是商家&#xff0c;都需要随时掌握货物的物流动态。然而&#xff0c;如何快速、准确地查询物流信息却是一个令人头疼的问题。今天&#xff0c;我将为大家介绍一…...

(40)温度传感器

文章目录 前言 1 设置 2 记录 3 参数说明 前言 ArduPilot 已经有许多可能的温度报告来源&#xff1a;电调&#xff0c;智能电池&#xff0c;电机 EFI&#xff0c;这些独立的传感器可以用来取代 ArduPilot 中已经存在的那些设备温度报告。它们也可以只是被记录下来。 ArduP…...

【靶场实操】sql-labs通关详解----第二节:前端页面相关(Less-11-Less-17)

SQL注入攻击是一种针对Web应用程序的安全漏洞&#xff0c;那么自然&#xff0c;SQL注入攻击也和前端页面息息相关&#xff0c;用户输入未被正确处理、动态查询的构建、前端JavaScript代码错误&#xff0c;等等我问题都可能造成安全威胁。 在上一节&#xff0c;我们了解了基础的…...

样式与特效(2)——新闻列表

1.盒子模型的边距概念 ) Margin-top 上面 Margin-bottom 底部 Margin-right 右边 Margin-left 左边 Margin : 10px &#xff08;上下左右都是10px&#xff09; Margin &#xff1a;10px,20px (上下边距10px 左右20px) CSS里面最重要的属性之一 将页面理解成…...

NICE Seminar(2023-07-16)|演化算法的理论研究到底有什么用?(南京大学钱超教授)

模式定理&#xff08;Schema Theorem&#xff09; 模式定理&#xff08;Schema Theorem&#xff09;是遗传算法&#xff08;Genetic Algorithm, GA&#xff09;的重要理论基础&#xff0c;由约翰霍兰德&#xff08;John Holland&#xff09;在1975年提出。它描述了具有特定模式…...

优盘驱动器未格式化?数据恢复全攻略

在数字时代&#xff0c;优盘作为便携的数据存储工具&#xff0c;广泛应用于日常生活与工作中。然而&#xff0c;当遇到“优盘驱动器未被格式化”的提示时&#xff0c;无疑给许多人带来了不小的困扰。这一状况往往意味着优盘的文件系统出现了问题&#xff0c;导致系统无法正确识…...

(超全)Kubernetes 的核心组件解析

引言 在现代软件开发和运维的世界中&#xff0c;容器化技术已经成为一种标志性的解决方案&#xff0c;它为应用的构建、部署和管理提供了前所未有的灵活性和效率。然而&#xff0c;随着应用规模的扩大和复杂性的增加&#xff0c;单纯依靠容器本身来管理这些应用和服务已不再足够…...

前端常用的【设计模式】和使用场景

设计原则 最重要的&#xff1a;开放封闭原则 对扩展开放对修改封闭 工厂模式 用一个工厂函数&#xff0c;来创建实例&#xff0c;隐藏 new 如 jQuery 的 $ 函数&#xff0c;React 的 createElement 函数 单例模式 全局唯一的实例(无法生成第二个) 如 Vuex 和 Redux 的 store…...

QT下载问题:Download from your IP address is not allowed

问题 Download from your IP address is not allowed 解决 https://download.csdn.net/download/baidu_34971492/89608794...

自建数据库VS云数据库

自建数据库VS云数据库 什么是自建数据库&#xff1f;自建数据库方案自建数据库的优点自建数据库的缺点什么是云数据库&#xff1f;自建数据库的缺点什么是云数据库&#xff1f; 云数据库方案云数据库的优点云数据库的缺点适用场景比较总结 【纪录片】中国数据库前世今生 在数字…...

【大数据开发语言Scala的入门教程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🪁Scala 🪡Scala是一种功能丰富且具有强大表达能力的静态类型…...

docker部署kkfileview文件在线预览服务

kkfileview文件在线预览服务部署使用 免费开源&#xff0c;功能强大&#xff0c;几乎支持日常见到的所有文件类型在线预览 目前支持的文件类型如下 支持 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx,xlam, xla 等 Office 办公文档支持 wp…...

朱锐 | 生命图像中的时间和意识

本文载于《科学・经济・社会》2023 年第 41 卷第 2 期第 37~61 页 作者简介&#xff1a; 朱锐&#xff08;1968年10月—2024年8月1日&#xff09;&#xff0c;中国人民大学哲学院杰出学者、特聘教授&#xff0c;美国德州州立大学客座教授&#xff0c;主要从事神经哲学、心灵哲…...

pytorch: cpu,cuda,tensorRt 推理对比学习

0&#xff1a;先看结果 针对resnet模型对图片做处理 原图结果 分别使用cpu&#xff0c;cuda&#xff0c;TensorRt做推理&#xff0c;所需要的时间对比 方法时间cpu13s594mscuda711mstensorRt 113ms 项目地址&#xff1a; GitHub - july1992/Pytorch-vily-study: vily 学…...

android 音频播放器,(一)SoundPool音频播放实例

1. Apk内&#xff0c;预定义按键与触发按键&#xff1a; layout 按键定义: <Button android:id"id/start" android:layout_width"match_parent" android:layout_height"wrap_content" android:textAllC…...

AVL解析

本节主要看板书 概念 AVL树&#xff08;Adelson-Velsky and Landis tree&#xff09;是一种自平衡二叉查找树&#xff0c;用于在动态集合中进行高效的插入、删除和查找操作。它保持树的高度接近最小可能值&#xff0c;从而确保这些操作的时间复杂度始终保持在O(log n)。AVL树…...

wordpress建站和使用/房地产销售怎么找客户

C语言程序设计实验报告实验项目:1、一维数组的应用2、二维数组的应用3、字符数组应用姓名&#xff1a;曾福波 实验地点&#xff1a; 家 实验时间&#xff1a;2020年5月19日一、实验目的与要求1、一维数组的应用定义一个一维整型数组&#xff0c;其大小为10&#xff0c;…...

湖南地税局官网站水利建设基金/手机清理优化软件排名

1. 添加token和Cookie 其他业务都是依赖于登录成功而执行的。所以获取登录成功后的token和Cookie。结合Fidder或者wireshark进行抓包。 1.1 添加token方法 添加“HTTP token管理器”&#xff0c;添加正则表达式&#xff0c;并在需要token的地方进行引用即可。如下图&#xf…...

注册网站用什么邮箱/郴州网站seo

前一篇文章介绍是传递一个参数列表&#xff0c;列表中的元素为基本类型&#xff0c;其实有时候需要传递多个同一类型的对象&#xff0c;测试也可以使用列表&#xff0c;只是列表中的元素为对象类型。 我模拟的场景是&#xff1a;通过页面按钮触发传递参数的请求&#xff0c;为了…...

wordpress标签云不显示/会员营销

用 ssh等开 linux远程终端时&#xff0c;应该常会碰到误按 ctrls把屏幕锁定的问题。简单的按下 ctrlq就能解锁&#xff0c;在一些软件不生效&#xff0c;在putty上可用。如果不想再遇到&#xff0c;可以在 .bashrc写上stty –ixon来把 flow control整个关掉&#xff0c;同时 ct…...

快速制作简单的网站/怎么出售友情链接

ES6里新添加了两个很好用的东西&#xff0c;set和Array.from。 set是一种新的数据结构&#xff0c;它可以接收一个数组或者是类数组对象&#xff0c;自动去重其中的重复项目。 var arr [0,2,3,4,4,0,2];console.log(new Set(arr)) 结果如下&#xff0c;但是这里大家可以看到…...

网站卖东西怎么做的/自动点击关键词软件

央视《百家讲坛》中讲《汉代风云人物》时&#xff0c;讲了《冤死的晁错》的案例。晁错是一个忠诚度高而工作起来又很忘我的“好员工”&#xff0c;而其之所以从一个“宠臣”沦落到“冤死鬼”&#xff0c;笔者认为主要是其“领导”上司无方&#xff0c;以致招致众怒&#xff0c;…...