day-06 static、单例设计模式、main、代码块、成员变量赋值顺序、final、抽象类抽象方法、模板方法设计模式

阿里巴巴-AI Agent工程师面试题精选:10道高频考题+答案解析(附PDF) 阿里巴巴AIAgent技术面试要点摘要(149字) 阿里巴巴在AIAgent领域布局完整,面试重点考察系统架构、幻觉治理、成本优化等核心能力。候选人需掌握分层架构设计、多Agent协作死锁处理、Token成本优化策略等关键技术。面试强调工程落地能力,包括工具调用容错、记忆系统设计、安全防护等实践要点。评估体系需覆盖效果、效率、成本多维度指标。未来趋势关注垂直领域专业化、多模态融合等方向。建议准备实际项目案例,突出技术深度与业务价值的结合,展现系统思维和工程能力。 阅读详情

1.static

某些特定的数据在内存空间里只有一份

类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些属性不因对象的不同而改变,将这些属性设置为类属性。相应的方法设置为类方法。
如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用。
使用范围:
在Java类中,可用static修饰属性、方法(静态方法中不能用this、super)、代码块、内部类
被修饰后的成员具备以下特点:
随着类的加载而加载
优先于对象存在
修饰的成员,被所有对象所共享
访问权限允许时,可不创建对象,直接被类调用


2.单例设计模式

所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对 某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
实现步骤:
1.私有化构造器、
2.静态方法返回对象,(因为构造器私有化了,就不能使用new创建新对象了,只能内部创建对象,但是内部创建的对象不能被调用,所以必须使用静态方法返回创建的对象)
3.变量也是静态的,(因为静态方法只能方法静态成员变量)
//单例设计模式:只存在一个实例对象
    //饿汉式:提前造好对象
public class Human {
    //3.成员变量也是静态的
    private static String name;
//    1.私有化构造器
    private Human (){}
//    2.静态方法创建对象,返回对象,实例也必须静态化
    private static Human h = new Human();
    public  static Human getInstance(){
        return h;
    }
}
//单例设计模式:只存在一个实例对象
    //懒汉式:现用现造对象,存在线程安全问题
public class Human {
    //3.成员变量也是静态的
    private static String name;
//    1.私有化构造器
    private Human (){}
//    2.实例也必须静态化
    private static Human h ;
//    2.调用方法时返回创建的实例,方法也是静态的
    public static Human getInstance(){
        if (h==null){
            h = new Human();
        }
        return h;
    }
}
网站的计数器,一般也是单例模式实现,否则难以同步。
应用程序的日志应用,一般都使用单例模式实现,这一般是由于共享的日志
文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加。
数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库
资源。
项目中,读取配置文件的类,一般也只有一个对象。没有必要每次使用配置
文件数据,都生成一个对象去读取。
Application 也是单例的典型应用
Windows的Task Manager (任务管理器)就是很典型的单例模式
Windows的Recycle Bin (回收站)也是典型的单例应用。在整个系统运行过程
中,回收站一直维护着仅有的一个实例。

3.main方法

public static void main(String [] args){}

java虚拟机调用类的main方法,所以main方法必须public

执行方法时又不用创建对象,所以是static静态的

参数是一个String类型的数组,保存执行时传递给所运行的类的参数

可以正常运行,public class 必须与文件名相同,class不一定与文件名相同 

一个.java文件可以包含多个类,但是只能有一个public class 且必须与文件名相同


4.代码块

代码块作用:对java类或对象进行初始化、先于构造器执行

分为两种:

静态代码块:初始化static属性

非静态代码块:


5.成员变量赋值顺序


6.final

 在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。

final标记的类不能被继承。提高安全性,提高程序的可读性。
String类、System类、StringBuffer类
final标记的方法不能被子类重写。
比如:Object类中的getClass()。
final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只
能被赋值一次。
final标记的成员变量必须在声明时或在每个构造器中或代码块中显式赋
值,然后才能使用。
final double MY_PI = 3.14;
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
// o = new Other();
o.i++;
} }
class Other {
public int i; }

//正确,我们只修改了对象o的成员变量,如果修改o=new Other()就错了

7.抽象类、抽象方法

随着子类不断实现具体功能,父类则变得越来越抽象,所以将父类设计成一个抽象类

含有抽象方法的类必须被声明为抽象类。
抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重 写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍为抽象类。
不能用abstract修饰变量、代码块、构造器;
不能用abstract修饰私有方法、静态方法、final的方法、final的类。
问题1:为什么抽象类不可以使用final关键字声明?抽象类有子类,final不能有子类
问题2:一个抽象类中可以定义构造器吗? 可以有构造器,但不能new,但是可以由子类使用
问题3:是否可以这样理解:抽象类就是比普通类多定义了抽象方 法,除了不能直接进行类的实例化操作之外,并没有任何的不同?可以

8.模板方法设计模式

换句话说,在软件开发中实现一个算法时,整体步骤很固定、通用,
这些步骤已经在父类中写好了。但是某些部分易变,易变部分可以抽
象出来,供不同子类实现。这就是一种模板模式。

相关推荐

Floyd算法在社交网络中的应用:如何找到六度人脉的最短路径?

本文探讨了Floyd算法在社交网络分析中的核心应用,特别是如何利用该算法高效计算任意两人之间的最短路径,从而量化“六度人脉”理论。文章通过构建微型社交网络模型,详细拆解了Floyd算法的动态规划原理与代码实现,并展示了如何从计算出的最短路径距离矩阵中挖掘节点中心性、识别社群等关键洞察,为社交推荐、影响力分析等场景提供技术支撑。

blockchain9miner的博客 1003

抽象类及接口

1,单词:biology生物 interface接口, abstract 抽象的 major 专业Illegal 不合法的 2,abstract介绍abstract:关键字,表示抽象的 * abstract修饰方法表示:表示给方法没有方法体,就是没有{} * ,并且,一旦类中存在抽象方法,给类必须使用abstract,表示该类是抽象类 * abstract修饰的类型中,是可以不存在abstract...

yy1711408814的博客 576

QGIS实战:5分钟搞定谷歌地图、高德、天地图等多源地图加载(附最新图源URL)

本文详细介绍了如何在QGIS中快速加载谷歌地图、高德、天地图等多源地图,提供2023年验证可用的最新图源URL和配置步骤。从环境准备到高级技巧,涵盖国内外主流地图服务的完整解决方案,帮助用户提升GIS工作效率。

weixin_29210759的博客 1219

java抽象类赋值_Java抽象类

抽象类其实就是可以理解为是一种父类,但是这种类不能直接实例化,必须要被继承,类中一样可以添加成员变量,成员方法(包括抽象和非抽象方法)例:public abstract class Human{private String name;private int age;private String sex;public abstract void action();public void setNam...

weixin_29086203的博客 2691

Reeds-Shepp曲线公式推导及代码实现-第二部分(共三部分)

文章目录2. Reeds-Shepp求解2.1 L+S+L+L^+S^+L^+L+S+L+2.2 L+S+R+L^+S^+R^+L+S+R+2.3 L+R−L+L^+R^-L^+L+R−L+2.4 L+R−L−L^+R^-L^-L+R−L−2.5 L+R+L−L^+R^+L^-L+R+L−2.6 L+Rβ+Lβ−R−L^+R_{\beta}^+L_{\beta}^-R^-L+Rβ+​Lβ−​R−2.7 L+Rβ−Lβ−R+L^+R_{\beta}^-L_{\beta}^-R^+L+Rβ−​Lβ−​R+2.8

jianmo的博客 1213

ks-快手滑块验证码-Js逆向

本文分析了快手滑块验证码的破解过程。首先通过抓包找到验证码背景图接口,发现需要动态获取captchaSession参数。然后深入分析验证流程,发现verifyParam参数被加密处理,需要追踪其生成逻辑。文章详细解析了加密参数c的构成,包括captchaSn、滑动距离、轨迹信息等,并指出轨迹验证较为严格。最后通过对比浏览器和本地生成的加密值,确认加密逻辑正确,但指出轨迹生成仍需优化。作者建议参考相关文章深入分析轨迹逻辑,并提供了验证成功的截图作为参考。

2302_76420666的博客 1878

继承与抽象类

继承与抽象类 1.什么是继承: 将一些类中相同的方法和属性提取出来,形成一个父类。然后这些子类通过关键词extends来继承这个父类中的部分属性和方法(它是一种代码重用方式) 2.为什么使用继承:为了解决一些类中相同方法和属性的重复性问题; 3.不能被继承的父类成员: 1.private成员 2.子类父类在不同包,由默认(friendly)修饰符修饰的成员 3.构造方法 4.访问修饰符被调用权限 1.同类:public,friendly,protect,private 2.同包(子类或者其他): publ.

weixin_47655184的博客 236

ESP32设备驱动-TB6612FNG直流电机驱动

TB6612FNG 是一款出色的双电机驱动器,非常适合将两个小型直流电机(例如微型金属齿轮电机)连接到微控制器,它还可以用于控制单个双极步进电机。 基于 MOSFET 的 H 桥比 L298N 和 Sanyo 的 LB1836M 等旧式驱动器中使用的基于 BJT 的 H 桥效率高得多,后者允许将更多电流输送到电机,而从逻辑电源汲取的电流更少 (对于真正低电压的应用,LB1836 仍然具有 TB6612 的优势)。

视觉与物联智能 3405

2020-08-14 继承and抽象

继承(super、this) super的三种用途: super的三种用途 1. 可以访问父类的成员变量。 super.成员变量 2. 可以访问父类的成员方法 super.成员方法() 3. 可以访问父类的构造方法 super(); this的三种用途: this的三种用途: 1. 可以访问本类中的成员变量。 this.成员变量 ...

weixin_49053217的博客 432

STM32串口控制LED灯的亮灭

STM32中的串口控制LED灯的亮灭,分为两种方式,一种是直接发送数字0和1来控制灯的亮灭,另一种是通过发送字符串来控制。 我所使用的开发板主控芯片是STM32F401RET6,主频84MHz, 首先要进行串口的初始化: /* 函数功能:串口的初始化 函数名:Usart_Init 返回值:无 参数:u32 brr 备注: USART1_TXD->PA9 USART1_RXD->PA10 */ void Usart_Init(u32 brr) { float div; u16 div

博客 2万+

FM1288回声消除芯片调试方案 - 综述

专栏文章概览

优快云mianfeixiazai001的博客 1714

JAVA学习(day06面向对象③)

1.static关键字 类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些属性不因对象的不同而改变,将这些属性设置为类属性。相应的方法设置为类方法。如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用。 在Java类中,可用static修饰属性、方法、代码块、内部类。被修饰后的成员随着类的加载而加载,优先于对象存在,修饰的成员,被所有对象所共享,访问权限允许时,可不创建对象,直接被类调用。 class ...

qq_40820859的博客 120

推理引擎终极对决:TensorRT vs ONNX Runtime,YOLOv8速度差30%的核心原因与实操指南

若你使用NVIDIA GPU,且追求极致速度和低延迟,TensorRT是唯一选择,尤其是边缘设备和实时场景;若你需要跨硬件部署、快速验证原型,或预算有限(无需NVIDIA GPU),ONNX Runtime是性价比之王;对于YOLOv8这类检测模型,TensorRT的FP16/INT8量化是“免费的速度提升”,建议优先采用。最后提醒:推理引擎的优化是“细节决定成败”——同样的引擎,不同的预处理方式、显存配置、批大小,都会导致10%-20%的性能差异。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1027

每天搞懂10道Java基础题day06

题一 1.如下的Java程序 public class Test { public static void main(String[] args) { System.out.println(args[0]); } } 若采用命令行“java Test one two three”调用,则程序输出的结果为: A:Test B:one C:two D:java 正确答案: B 解析:采用命令行“ java Test one two three ”调用 其中Test为调

qq_45994021的博客 394

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java基础知识

自定义异常通常用来定义那些业务上的异常问题。定义自定义异常需要注意以下问题1.异常的类名要做到见名知义2.需要是Exception的子类3.提供超类异常提供的所有种类构造器/*** 非法的年龄异常* 自定义异常通常用来说明业务上的错误.* 自定义异常要注意以下问题:* 1:定义的类名要做到见名知义* 2:必须是Exception的子类* 3:提供Exception所定义的所有构造方法* Illegal:非法的* 结合Person类*///alt+ins 构造器 全选。

m0_66987245的博客 551

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Go / C / Python / Java 四语言对照学习总览

按统一维度横向对比四门语言的核心知识点,便于交叉记忆与迁移学习。

2401_83227843的博客 954

Java基础:常用类(四)

Java的类库(也称为Java API)非常庞大和丰富,它包含了大量用于处理各种常见编程任务的类和接口,包括字符串处理、基础数据类型包装类、数学计算、日期时间、正则表达式等。

文优 959

Runoob.com

Runoob.com1、C++ 基本的输入输出1、标准输出流(cout)2、标准输入流(cin)3、标准日志流(clog)2、类&对象2.1 类成员函数2.2 类访问修饰符2.3 类构造函数4.3.1 举例1:不带参数的构造函数2.3.2 带参数的构造函数2.3.2.1 使用初始化列表来初始化字段2.4 析构函数2.5 拷贝构造函数2.6 友元函数2.7 内联函数2.8 this指针(每个对象都有一个特殊的指针 this,它指向对象本身。)2.9 指向类的指针2.10 类的静态成员2.10.1 用

oDuanYanGuHong的博客 1707

Java学习之路-数字和日期处理

数字和日期处理 一、概念 1、数字处理类 ​ 在解决实际问题时,对数字的处理是非常普遍的,如数学问题、随机问题等,为了应对以上问题,java提供了处理相关问题的类,包括: DecimalFormat类(用于格式化数字)、Math类(为各种数学计算提供了工具方法)、Random类(为java处理随机数问题提供了各种方法)、BigInteger类与BigDecimal类(为所有的大数字处理提供了相应的数学运算操作方法) 2、日期处理类 java.util.Date。实现类,其对象具有时间、日期组件。 java

White Chuan 1205

工作中使用到的单词(软件开发)_第三版

====

sun0322 1万+

LangChain4j 中文文档

欢迎!LangChain4j 的目标是简化将大语言模型集成到 Java 应用中的过程。它的实现方式如下:统一 API: 大语言模型提供商(如 OpenAI 或 Google Vertex AI)和嵌入(向量)存储(如 Pinecone 或 Milvus)都使用专有 API。LangChain4j 提供统一 API,避免你为每个提供商或存储分别学习和实现特定 API。想尝试不同的大语言模型或嵌入存储时,你可以轻松切换,而无需重写代码。LangChain4j 目前支持 20+ 个主流大语言模型提供商 和 30+

qq_43356685的博客 987

抽象类与接口总结 - Java

继承抽象类 若继承抽象类的子类并未实现抽象类中的所有抽象方法,那么该子类必须也是抽象类,即必须用abstract修饰. 实现接口

Clearlight's Blog 672

抽象类是什么?

什么是抽象类?抽象类怎么样用?抽象类有哪些注意要点?

qq_16237789的博客 500

java中的抽象类

java中的抽象类 1.概念 随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。 用abstract关键字来修饰一个类,这个类叫做抽象类。 用abstract来修饰一个方法,该方法叫做抽象方法。 抽象方法:只有方法的声明,没有方法的实现。以分号结束: 比如:public abstract void talk(); 含有抽象方法的类必须被声明为抽象类。 抽象类不能被实例

xiaotai1234的博客 729

JAVA之(抽象类、抽象方法)

·抽象方法 使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。 ·抽象类 包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。 抽象方法父类没有进行实现,子类必须进行实现。 package cn.sxt.oop; /** * *测试抽象类 * @author 18846 * *...

心猿问道的博客 549
上一篇: day05-继承、方法的重写、super、多态、object类、包装类、native
下一篇: day06-接口、代理模式设计模式、内部类、面向对象总结
m0_62361663
博客等级 码龄5年 0粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值