java后端开发day20--面向对象进阶(一)--static继承

news2025/4/25 23:34:49

在这里插入图片描述
(以下内容全部来自上述课程)
在这里插入图片描述

1.static–静态–共享

static表示静态,是java中的一个修饰符,可以修饰成员方法,成员变量。

1.静态变量

被static修饰的成员变量,叫做静态变量。
特点:

  • 被该类所有对象共享
  • 不属于对象,属于类
  • 随着类的加载而加载,优先于对象存在

调用方式:

  • 类名调用(推荐)
  • 对象名调用

2.静态方法

被static修饰的成员方法,叫做静态方法。
特点:

  • 多用在测试类和工具类中
  • javabean类中很少会用

调用方法:

  • 类名调用(推荐)
  • 对象名调用

3.static内存图

静态变量是随着类的加载而加载的,优先于对象出现的。请添加图片描述

4.工具类

JavaBean类:用来描述一类事物的类。
测试类:用来检查其他类是否书写正确,带有main方法的类,是程序的入口。
工具类:不是用来描述一类事物的,而是帮我们做一些事情的类。

1.规则:
  • 类名见名知意
  • 私有化构造方法
  • 方法定义为静态
2.练习:

需求:在实际开发中,经常会遇到一些数组使用的工具类。
请按照如下要求编写一个数组的工具类:ArrayUtil

  • 提供一个工具类方法printArr,用于返回整数数组的内容。
    返回的字符串格式如:[10,20,50,34,100](只考虑整数数组,且只考虑一维数组)

  • 提供这样一个工具方法getAerage,用于返回平均分。(只考虑浮点型数组,且只考虑一维数组)

  • 定义一个测试类TestDemo,调用该工具类的工具方法,并返回结果。

工具类:

package a02staticdemo2;

public class ArrayUtil {

    //私有构造方法
    //目的:是不让其他类创建本类对象
    private ArrayUtil(){}

    //需要定义为静态的,方便调用
    public static String printArr(int[] arr){
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if(i == arr.length - 1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]).append(", ");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }

    //返回平均值
    public static double getAvg(int[] arr){
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        int avg = sum / arr.length;
        return avg;
    }
}

测试类:

package a02staticdemo2;

public class TestDemo {
    public static void main(String[] args) {
        //测试工具类中的两个方法是否正确
        int[]arr = {1,2,3,4,5};
        double avg = ArrayUtil.getAvg(arr);
        System.out.println(avg);
        String s = ArrayUtil.printArr(arr);
        System.out.println(s);
    }
}

5.注意事项

  • 静态(公有)方法中,只能访问静态。
  • 非静态(私有)方法可以访问所有。
  • 静态方法中没有this关键字。(非静态中存在隐藏this,在形参之前,由虚拟机赋值)

2.继承

面向对象的三大特征:封装、继承、多态。
封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为。

1.定义

  • java中提供一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系。
public class Student extends Person{}
  • Student称为子类(派生类),Person称为父类(基类或者超类)。

2.好处

  • 可以把多个子类中重复的代码抽取到父类中,提高了代码的复用性。
  • 子类可以在父类的基础上,增加其他的功能,使子类更强大。

3.什么时候用继承

当类与类之间,存在相同(共性)的内容,并满足子类是父类中的一种,就可以考虑使用继承,来优化代码。

4.继承的特点

java只支持单继承(一个爹),不支持多继承(好几个爹),但支持多层继承(子孙三代)。
每一个类都直接或者间接的继承于Object(爷爷)。

5.例子

请添加图片描述

1.Animal
package a01loopextendsdemo1;

public class Animal {
    public void eat(){
        System.out.println("动物吃东西");
    }
    public void drink(){
        System.out.println("动物喝水");
    }
}

2.Cat
package a01loopextendsdemo1;

public class Cat extends Animal{
    public void catchMouse(){
        System.out.println("猫抓老鼠");
    }
}

3.Dog
package a01loopextendsdemo1;

public class Dog extends Animal{
    public void lookHome(){
        System.out.println("狗看家");
    }
}

4.布偶猫
package a01loopextendsdemo1;

public class Ragdoll extends Cat{

}

5.狸花猫
package a01loopextendsdemo1;

public class LIHua extends Cat{
}

6.哈士奇
package a01loopextendsdemo1;

public class Husky extends Dog{
    public void breakHoom(){
        System.out.println("哈士奇拆家");
    }
}

7.泰迪
package a01loopextendsdemo1;

public class Teddy extends Dog{
    public void touch(){
        System.out.println("泰迪狗蹭来蹭去");
    }
}

8.测试类
package a01loopextendsdemo1;

public class Test {
    public static void main(String[] args) {
        //创建对象并调用方法

        //1.创建布偶猫的对象
        Ragdoll ragdoll = new Ragdoll();
        ragdoll.eat();
        ragdoll.drink();

        //2.创建狸花猫的对象
        LIHua liHua = new LIHua();
        liHua.eat();

        //3.创建哈士奇的对象
        Husky husky = new Husky();
        husky.eat();
        husky.drink();


    }
}

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

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

相关文章

Spring Boot集成MyBatis访问MySQL:从项目搭建到基础数据库查询(基础入门)

Spring Boot集成MyBatis访问MySQL 一、引言 在当今企业级应用开发中&#xff0c;Spring Boot、MyBatis与MySQL的组合凭借其高效性和灵活性&#xff0c;成为构建数据驱动型应用的首选方案。本文将带你从零开始搭建项目&#xff0c;掌握Spring Boot集成MyBatis的基础入门内容。…

ShenNiusModularity项目源码学习(14:ShenNius.Infrastructure项目分析)

ShenNius.Infrastructure项目用于定义ShenNius.Admin.Mvc项目和ShenNius.Admin.API项目共用的特性类、数据操作接口实现类、上下文类、通讯类&#xff0c;主要文件的用途如下&#xff1a;   Attributes文件夹保存特性类或过滤器类定义&#xff0c;主要包括&#xff1a;   …

【C语言】第八期——指针、二维数组与字符串

目录 1 初始指针 2 获取变量的地址 3 定义指针变量、取地址、取值 3.1 定义指针变量 3.2 取地址、取值 4 对指针变量进行读写操作 5 指针变量作为函数参数 6 数组与指针 6.1 指针元素指向数组 6.2 指针加减运算&#xff08;了解&#xff09; 6.2.1 指针加减具体数字…

Spring Boot集成Spring Security之HTTP请求授权

一、HTTP请求授权工作原理 ​ 基于Spring Security最新的Http请求授权讲解&#xff0c;不再使用旧版的请求授权 授权过滤器AuthorizationFilter获取认证信息 调用RequestMatcherDelegatingAuthorizationManager的check方法验证该用户是否具有该请求的授权 RequestMatcherDele…

可以免费无限次下载PPT的网站

前言 最近发现了一个超实用的网站&#xff0c;想分享给大家。 在学习和工作的过程中&#xff0c;想必做PPT是一件让大家都很头疼的一件事。 想下载一些PPT模板减少做PPT的工作量&#xff0c;但网上大多精美的PPT都是需要付费才能下载使用。 即使免费也有次数限制&#xff0…

从零开始自主「起身站立」,上海AI Lab发布最新控制算法,机器人:起猛了

来源 | 机器之心 近日&#xff0c;上海 AI Lab 具身智能中心研究团队在机器人控制领域取得了最新突破&#xff0c;提出的 HoST&#xff08;Humanoid Standing-up Control&#xff09;算法&#xff0c;成功让人形机器人在多种复杂环境中实现了自主站起&#xff0c;并展现出强大…

Solr中得Core和Collection的作用和关系

Solr中得Core和Collection的作用和关系 一&#xff0c; 总结 在Apache Solr中&#xff0c;Core和Collection 是两个核心概念&#xff0c;他们分别用于单机模式和分布式模式&#xff08;SolrCloud&#xff09;中&#xff0c;用于管理和组织数据。 二&#xff0c;Core 定义&am…

AI驱动的自动化留给人类的时间不多了

时间紧迫&#xff01;时间紧迫&#xff01;时间紧迫&#xff01; 关于AI工作流催生的行业任务自动化时间窗口&#xff0c;结合技术成熟度、成本效益、行业特性等维度&#xff0c;可划分为以下阶段&#xff1a; 一、技术渗透阶段&#xff08;2025-2028年&#xff09; 高重复性任…

使用 Containerd 通过 HTTP 协议拉取 Harbor 私有镜像仓库的镜像

在 Kubernetes 1.24及以上版本环境中&#xff0c;docker不再被支持&#xff0c;主要使用Containerd 是常用的容器运行。默认情况下&#xff0c;Containerd 使用 HTTPS 协议与镜像仓库通信。然而&#xff0c;在某些场景下&#xff08;如测试环境或内部网络&#xff09;&#xff…

Dify在Ubuntu20.04系统的部署

文章目录 一、dify 介绍1.核心功能优势2.应用场景 二、dify 安装(docker方式)1.代码库下载2.配置文件修改3.启动docker 容器 三、遇到问题与解决1.使用sudo docker compose up -d报错2.使用service docker start报错 一、dify 介绍 Dify 是一款开源的大语言模型&#xff08;LL…

达梦:内存相关参数

目录 28个相关参数1. 内存池相关MEMORY_POOLMEMORY_N_POOLSMEMORY_BAK_POOL 2. 大缓冲区相关HUGE_BUFFERHUGE_BUFFER_POOLS 3. 共享缓冲区相关BUFFERBUFFER_POOLSBUFFER_MODEMAX_BUFFER 4. 快速池相关FAST_POOL_PAGES 5. 回收池相关RECYCLE_POOLS 6. 回滚段池相关ROLLSEG_POOLS…

计算机毕设-基于springboot的融合多源高校画像数据与协同过滤算法的高考择校推荐系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

《Qt动画编程实战:轻松实现头像旋转效果》

《Qt动画编程实战&#xff1a;轻松实现头像旋转效果》 Qt 提供了丰富的动画框架&#xff0c;可以轻松实现各种平滑的动画效果。其中&#xff0c;旋转动画是一种常见的 UI 交互方式&#xff0c;广泛应用于加载指示器、按钮动画、场景变换等。本篇文章将详细介绍如何使用 Qt 实现…

SpringBoot3—快速入门

一、简介 &#xff08;1&#xff09;前置知识 Java17Spring、SpringMVC、MyBatisMaven、IDEA &#xff08;2&#xff09;环境要求 &#xff08;3&#xff09;SpringBoot3是什么 核心概念&#xff1a;Spring Boot 底层是 Spring&#xff0c;能简单、快速地创建一个独立的、生…

Python基于机器学习的微博舆情情感分析系统,微博评论情感分析可视化系统(全新升级)

大家好&#xff0c;今天为大家带来的是Python基于机器学习的微博舆情情感分析系统&#xff0c;微博评论情感分析可视化系统&#xff0c;这个系统在原本的系统上进行优化升级。 算法从开源框架的 snlow &#xff0c;到支持机器学习的 lstm 算法可以手动输入语句&#xff0c;进行…

Matlab地图绘制教程第2期—水陆填充图

上一期分享了海岸线图的绘制方法&#xff1a; 本着由浅入深的理念&#xff0c;本期再来分享一下水陆填充图的绘制方法。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;Matlab地图绘制教程系列&#xff0c;旨在降低大家使用Matlab进行地图类科研绘图的门槛&#xff0c;…

云创智城YunCharge 新能源二轮、四轮充电解决方案(云快充、万马爱充、中电联、OCPP1.6J等多个私有单车、汽车充电协议)之新能源充电行业系统说明书

云创智城YunCharge 新能源充电行业系统说明书 ⚡官方文档 ⚡官网地址 1. 引言 随着全球环境保护和能源危机的加剧&#xff0c;新能源汽车行业得到了快速发展&#xff0c;充电基础设施建设也随之蓬勃发展。新能源充电行业系统旨在提供高效、便捷的充电服务&#xff0c;满足电…

(八)Java-Collection

一、Collection接口 1.特点 Collection实现子类可以存放多个元素&#xff0c;每个元素可以是Object&#xff1b; 有些Collection的实现类&#xff0c;可以存放重复的元素&#xff0c;有些不可以&#xff1b; 有些Collection的实现类&#xff0c;有些是有序的&#xff08;Li…

小程序高度问题背景scss

不同的机型&#xff0c;他的比例啥的都会不一样&#xff0c;同样的rpx也会有不同的效果。所以这里选择了取消高度。 <view class"box-border" :style"{padding-top: ${navHeight}px,}"><!-- 已登录 --><view v-if"userStore.userInfo&…

Cuppa CMS v1.0 任意文件读取(CVE-2022-25401)

漏洞简介&#xff1a; Cuppa CMS v1.0 administrator/templates/default/html/windows/right.php文件存在任意文件读取漏洞 漏洞环境&#xff1a; 春秋云镜中的漏洞靶标&#xff0c;CVE编号为CVE-2022-25401 漏洞复现 弱口令行不通 直接访问administrator/templates/defau…